[0x3704] EmuMain: Cxbx-Reloaded Version 8b11cce5 (Sep 13 2017) [0x3704] EmuMain: Log started at 2017-09-15 04:09:01 [0x3704] EmuMain: Debug Trace Disabled. ---------------------------- LLE CONFIG ---------------------------- EmuMain: LLE for APU is disabled EmuMain: LLE for GPU is disabled EmuMain: LLE for JIT is disabled --------------------------- INPUT CONFIG --------------------------- EmuMain: Using XInput --------------------------- VIDEO CONFIG --------------------------- EmuMain: Direct3D Device: Direct3D HAL (Hardware Accelerated) EmuMain: Video Resolution: Automatic (Default) EmuMain: Force VSync is disabled EmuMain: Fullscreen is disabled EmuMain: Hardware YUV is disabled --------------------------- AUDIO CONFIG --------------------------- EmuMain: Audio Adapter: Primary Audio Device EmuMain: Legacy Audio Hack is disabled EmuMain: PCM is enabled EmuMain: XADPCM is disabled EmuMain: Unknown Codec is disabled ------------------------- END OF CONFIG LOG ------------------------ [0x3704] EmuWarn: Failed to load Keys.bin. Cxbx-Reloaded will be unable to read Save Data from a real Xbox EmuMain : XeImageFileName = D:\default.xbe EmuMain : XBE TitleID : 43430003 EmuMain : XBE TitleName : Dino Crisis 3 EmuMain : XBE Region : REGION ERROR EmuMain : XBE Library 0 : XAPILIB (version 5558) EmuMain : XBE Library 1 : D3D8 (version 5558) EmuMain : XBE Library 2 : D3DX8 (version 5558) EmuMain : XBE Library 3 : XGRAPHC (version 5558) EmuMain : XBE Library 4 : DSOUND (version 5558) EmuMain : XBE Library 5 : XBOXKRNL (version 5558) EmuMain : XBE Library 6 : LIBC (version 5558) CxbxDbg> ******************************************************************************* * Cxbx-Reloaded High Level Emulation database last modified Wed Sep 13 13:20:21 2017 ******************************************************************************* Found HLE Cache File: 65933CB4.ini Using HLE Cache HLECache: 0x0020766e -> CDirectSoundBuffer_GetCurrentPosition (no patch) HLECache: 0x00207598 -> CDirectSoundBuffer_GetStatus (no patch) HLECache: 0x0020739c -> CDirectSoundBuffer_Play (no patch) HLECache: 0x00209d95 -> CDirectSoundBuffer_SetAllParameters (no patch) HLECache: 0x0020ae9f -> CDirectSoundBuffer_SetBufferData (no patch) HLECache: 0x00209de7 -> CDirectSoundBuffer_SetConeAngles (no patch) HLECache: 0x002077a5 -> CDirectSoundBuffer_SetCurrentPosition (no patch) HLECache: 0x0020a0c2 -> CDirectSoundBuffer_SetDistanceFactor (no patch) HLECache: 0x0020a118 -> CDirectSoundBuffer_SetDopplerFactor (no patch) HLECache: 0x00208274 -> CDirectSoundBuffer_SetEG (no patch) HLECache: 0x002082c2 -> CDirectSoundBuffer_SetFilter (no patch) HLECache: 0x0020b1cd -> CDirectSoundBuffer_SetFormat (no patch) HLECache: 0x00209cab -> CDirectSoundBuffer_SetFrequency (no patch) HLECache: 0x00208310 -> CDirectSoundBuffer_SetHeadroom (no patch) HLECache: 0x0020a21a -> CDirectSoundBuffer_SetI3DL2Source (no patch) HLECache: 0x00208226 -> CDirectSoundBuffer_SetLFO (no patch) HLECache: 0x002075e9 -> CDirectSoundBuffer_SetLoopRegion (no patch) HLECache: 0x00209ef6 -> CDirectSoundBuffer_SetMaxDistance (no patch) HLECache: 0x00209f4c -> CDirectSoundBuffer_SetMinDistance (no patch) HLECache: 0x0020835e -> CDirectSoundBuffer_SetMixBinVolumes (no patch) HLECache: 0x00209d47 -> CDirectSoundBuffer_SetMixBins (no patch) HLECache: 0x002077f6 -> CDirectSoundBuffer_SetNotificationPositions (no patch) HLECache: 0x00209cf9 -> CDirectSoundBuffer_SetOutputBuffer (no patch) HLECache: 0x00209c0a -> CDirectSoundBuffer_SetPlayRegion (no patch) HLECache: 0x00209ff4 -> CDirectSoundBuffer_SetPosition (no patch) HLECache: 0x00209de7 -> CDirectSoundBuffer_SetRolloffCurve (no patch) HLECache: 0x0020a16e -> CDirectSoundBuffer_SetRolloffFactor (no patch) HLECache: 0x0020a05b -> CDirectSoundBuffer_SetVelocity (no patch) HLECache: 0x0020818a -> CDirectSoundBuffer_SetVolume (no patch) HLECache: 0x00208448 -> CDirectSoundBuffer_Use3DVoiceData (no patch) HLECache: 0x00207ba2 -> CDirectSoundStream_FlushEx (no patch) HLECache: 0x00207af8 -> CDirectSoundStream_Pause *PATCHED* HLECache: 0x0020858a -> CDirectSoundStream_SetEG *PATCHED* HLECache: 0x002085dc -> CDirectSoundStream_SetFilter *PATCHED* HLECache: 0x0020b21b -> CDirectSoundStream_SetFormat *PATCHED* HLECache: 0x0020a26c -> CDirectSoundStream_SetFrequency *PATCHED* HLECache: 0x0020862e -> CDirectSoundStream_SetHeadroom *PATCHED* HLECache: 0x0020a310 -> CDirectSoundStream_SetMixBins *PATCHED* HLECache: 0x0020a2be -> CDirectSoundStream_SetOutputBuffer *PATCHED* HLECache: 0x0020a3b8 -> CDirectSoundStream_SetRolloffCurve *PATCHED* HLECache: 0x002084e6 -> CDirectSoundStream_SetVolume *PATCHED* HLECache: 0x00208776 -> CDirectSoundStream_Use3DVoiceData (no patch) HLECache: 0x00206eda -> CDirectSoundVoiceSettings_SetMixBinVolumes (no patch) HLECache: 0x002093c1 -> CDirectSoundVoiceSettings_SetMixBins (no patch) HLECache: 0x0020707a -> CDirectSoundVoice_CommitDeferredSettings (no patch) HLECache: 0x002096d0 -> CDirectSoundVoice_SetAllParameters (no patch) HLECache: 0x00209808 -> CDirectSoundVoice_SetConeAngles (no patch) HLECache: 0x00209a0d -> CDirectSoundVoice_SetDistanceFactor (no patch) HLECache: 0x00209a40 -> CDirectSoundVoice_SetDopplerFactor (no patch) HLECache: 0x00207014 -> CDirectSoundVoice_SetEG (no patch) HLECache: 0x00207027 -> CDirectSoundVoice_SetFilter (no patch) HLECache: 0x0020adbf -> CDirectSoundVoice_SetFormat (no patch) HLECache: 0x0020963b -> CDirectSoundVoice_SetFrequency (no patch) HLECache: 0x0020703a -> CDirectSoundVoice_SetHeadroom (no patch) HLECache: 0x00209ae9 -> CDirectSoundVoice_SetI3DL2Source (no patch) HLECache: 0x00207001 -> CDirectSoundVoice_SetLFO (no patch) HLECache: 0x002098d0 -> CDirectSoundVoice_SetMaxDistance (no patch) HLECache: 0x00209903 -> CDirectSoundVoice_SetMinDistance (no patch) HLECache: 0x0020705d -> CDirectSoundVoice_SetMixBinVolumes (no patch) HLECache: 0x002096b3 -> CDirectSoundVoice_SetMixBins (no patch) HLECache: 0x0020965f -> CDirectSoundVoice_SetOutputBuffer (no patch) HLECache: 0x00209969 -> CDirectSoundVoice_SetPosition (no patch) HLECache: 0x00209808 -> CDirectSoundVoice_SetRolloffCurve (no patch) HLECache: 0x00209a73 -> CDirectSoundVoice_SetRolloffFactor (no patch) HLECache: 0x002099bb -> CDirectSoundVoice_SetVelocity (no patch) HLECache: 0x00206fe5 -> CDirectSoundVoice_SetVolume (no patch) HLECache: 0x002071cf -> CDirectSoundVoice_Use3DVoiceData (no patch) HLECache: 0x0020b35e -> CDirectSound_CommitDeferredSettings *PATCHED* HLECache: 0x0020b7a2 -> CDirectSound_CreateSoundBuffer (no patch) HLECache: 0x0020b83e -> CDirectSound_CreateSoundStream (no patch) HLECache: 0x00206da2 -> CDirectSound_EnableHeadphones (no patch) HLECache: 0x00206c25 -> CDirectSound_GetOutputLevels (no patch) HLECache: 0x0020b8cf -> CDirectSound_SetAllParameters (no patch) HLECache: 0x0020b9b4 -> CDirectSound_SetDistanceFactorA (no patch) HLECache: 0x0020ba13 -> CDirectSound_SetDopplerFactor (no patch) HLECache: 0x0020bc44 -> CDirectSound_SetI3DL2Listener (no patch) HLECache: 0x00206bb7 -> CDirectSound_SetMixBinHeadroom (no patch) HLECache: 0x0020bb5e -> CDirectSound_SetPosition (no patch) HLECache: 0x0020ba72 -> CDirectSound_SetRolloffFactor (no patch) HLECache: 0x0020bbd1 -> CDirectSound_SetVelocity (no patch) HLECache: 0x00206c6b -> CDirectSound_SynchPlayback *PATCHED* HLECache: 0x0020e2f2 -> CFullHRTFSource_GetCenterVolume (no patch) HLECache: 0x0020e7e5 -> CHRTFSource_SetFullHRTF5Channel (no patch) HLECache: 0x00213860 -> CMcpxBuffer_GetStatus (no patch) HLECache: 0x002140a9 -> CMcpxBuffer_Play2 (no patch) HLECache: 0x00213ed0 -> CMcpxBuffer_SetCurrentPosition (no patch) HLECache: 0x0021097a -> CMcpxStream_Pause (no patch) HLECache: 0x00212499 -> CMcpxVoiceClient_SetEG (no patch) HLECache: 0x0021262b -> CMcpxVoiceClient_SetFilter (no patch) HLECache: 0x0021236a -> CMcpxVoiceClient_SetLFO (no patch) HLECache: 0x00212c28 -> CMcpxVoiceClient_SetVolume (no patch) HLECache: 0x001cf967 -> CMiniport_CreateCtxDmaObject (no patch) HLECache: 0x001cfd08 -> CMiniport_InitHardware (no patch) HLECache: 0x00000000 -> ConvertThreadToFiber HLECache: 0x00000000 -> CreateFiber HLECache: 0x001c6840 -> D3DBaseTexture_GetLevelCount *PATCHED* HLECache: 0x001640a0 -> D3DCubeTexture_GetCubeMapSurface *PATCHED* HLECache: 0x001c69b0 -> D3DCubeTexture_GetCubeMapSurface2 *PATCHED* HLECache: 0x001ce450 -> D3DCubeTexture_LockRect *PATCHED* HLECache: 0x001e14b8 -> D3DDEVICE (no patch) HLECache: 0x001e1390 -> D3DDeferredRenderState (no patch) HLECache: 0x001e1020 -> D3DDeferredTextureState (no patch) HLECache: 0x001c1110 -> D3DDevice_AddRef *PATCHED* HLECache: 0x00000000 -> D3DDevice_ApplyStateBlock (not patched) HLECache: 0x001c4fd0 -> D3DDevice_Begin *PATCHED* HLECache: 0x001cb8a0 -> D3DDevice_BeginPush *PATCHED* HLECache: 0x001d3320 -> D3DDevice_BeginPushBuffer *PATCHED* HLECache: 0x001cbdb0 -> D3DDevice_BeginStateBig (no patch) HLECache: 0x00000000 -> D3DDevice_BeginStateBlock (not patched) HLECache: 0x001c34f0 -> D3DDevice_BeginVisibilityTest *PATCHED* HLECache: 0x001c1180 -> D3DDevice_BlockOnFence *PATCHED* HLECache: 0x001c1250 -> D3DDevice_BlockUntilVerticalBlank *PATCHED* HLECache: 0x00000000 -> D3DDevice_CaptureStateBlock (not patched) HLECache: 0x001cac40 -> D3DDevice_Clear *PATCHED* HLECache: 0x001c2790 -> D3DDevice_CopyRects *PATCHED* HLECache: 0x00162cf0 -> D3DDevice_CreateCubeTexture *PATCHED* HLECache: 0x00000000 -> D3DDevice_CreateImageSurface (not patched) HLECache: 0x00000000 -> D3DDevice_CreateIndexBuffer HLECache: 0x001c0960 -> D3DDevice_CreateIndexBuffer2 (no patch) HLECache: 0x001c0b80 -> D3DDevice_CreatePalette2 *PATCHED* HLECache: 0x001c6be0 -> D3DDevice_CreatePixelShader *PATCHED* HLECache: 0x00000000 -> D3DDevice_CreateStateBlock (not patched) HLECache: 0x001c6850 -> D3DDevice_CreateTexture2 *PATCHED* HLECache: 0x001c0aa0 -> D3DDevice_CreateVertexBuffer2 (no patch) HLECache: 0x001c55d0 -> D3DDevice_CreateVertexShader *PATCHED* HLECache: 0x00000000 -> D3DDevice_CreateVolumeTexture (not patched) HLECache: 0x001c6c30 -> D3DDevice_DeletePixelShader *PATCHED* HLECache: 0x00000000 -> D3DDevice_DeleteStateBlock (not patched) HLECache: 0x001c6000 -> D3DDevice_DeleteVertexShader *PATCHED* HLECache: 0x001c4b00 -> D3DDevice_DrawIndexedVertices *PATCHED* HLECache: 0x001c4920 -> D3DDevice_DrawIndexedVerticesUP *PATCHED* HLECache: 0x00000000 -> D3DDevice_DrawRectPatch (not patched) HLECache: 0x00000000 -> D3DDevice_DrawTriPatch HLECache: 0x001c4a60 -> D3DDevice_DrawVertices *PATCHED* HLECache: 0x001c47b0 -> D3DDevice_DrawVerticesUP *PATCHED* HLECache: 0x00000000 -> D3DDevice_EnableOverlay (not patched) HLECache: 0x001c5010 -> D3DDevice_End *PATCHED* HLECache: 0x001cb8c0 -> D3DDevice_EndPush *PATCHED* HLECache: 0x001d3390 -> D3DDevice_EndPushBuffer *PATCHED* HLECache: 0x00000000 -> D3DDevice_EndStateBlock (not patched) HLECache: 0x001c3590 -> D3DDevice_EndVisibilityTest *PATCHED* HLECache: 0x001c36b0 -> D3DDevice_FlushVertexCache *PATCHED* HLECache: 0x00000000 -> D3DDevice_GetBackBuffer (not patched) HLECache: 0x001c23a0 -> D3DDevice_GetBackBuffer2 *PATCHED* HLECache: 0x001c1010 -> D3DDevice_GetBackMaterial *PATCHED* HLECache: 0x001c0c40 -> D3DDevice_GetCreationParameters *PATCHED* HLECache: 0x001c2ae0 -> D3DDevice_GetDepthStencilSurface2 *PATCHED* HLECache: 0x001c0c20 -> D3DDevice_GetDeviceCaps (no patch) HLECache: 0x001c35f0 -> D3DDevice_GetDisplayFieldStatus *PATCHED* HLECache: 0x001c1e80 -> D3DDevice_GetDisplayMode *PATCHED* HLECache: 0x001c0d10 -> D3DDevice_GetGammaRamp *PATCHED* HLECache: 0x001c1040 -> D3DDevice_GetLight *PATCHED* HLECache: 0x001c0fc0 -> D3DDevice_GetMaterial *PATCHED* HLECache: 0x001c12a0 -> D3DDevice_GetModelView *PATCHED* HLECache: 0x00000000 -> D3DDevice_GetOverlayUpdateStatus (not patched) HLECache: 0x001c6c90 -> D3DDevice_GetPixelShader *PATCHED* HLECache: 0x001c1280 -> D3DDevice_GetProjectionViewportMatrix *PATCHED* HLECache: 0x001d3420 -> D3DDevice_GetPushBufferOffset *PATCHED* HLECache: 0x001c2ac0 -> D3DDevice_GetRenderTarget2 *PATCHED* HLECache: 0x001c1370 -> D3DDevice_GetScissors *PATCHED* HLECache: 0x001c5310 -> D3DDevice_GetShaderConstantMode *PATCHED* HLECache: 0x001c5c40 -> D3DDevice_GetStreamSource2 *PATCHED* HLECache: 0x001c3150 -> D3DDevice_GetTexture2 *PATCHED* HLECache: 0x001c1330 -> D3DDevice_GetTile *PATCHED* HLECache: 0x001c0ec0 -> D3DDevice_GetTransform *PATCHED* HLECache: 0x001c6c90 -> D3DDevice_GetVertexShader *PATCHED* HLECache: 0x001c59b0 -> D3DDevice_GetVertexShaderConstant *PATCHED* HLECache: 0x001c6280 -> D3DDevice_GetVertexShaderDeclaration *PATCHED* HLECache: 0x001c6590 -> D3DDevice_GetVertexShaderFunction *PATCHED* HLECache: 0x001c5a20 -> D3DDevice_GetVertexShaderInput *PATCHED* HLECache: 0x001c5e50 -> D3DDevice_GetVertexShaderSize *PATCHED* HLECache: 0x001c5e70 -> D3DDevice_GetVertexShaderType *PATCHED* HLECache: 0x001c0f50 -> D3DDevice_GetViewport *PATCHED* HLECache: 0x001c82c0 -> D3DDevice_GetViewportOffsetAndScale *PATCHED* HLECache: 0x001c11a0 -> D3DDevice_GetVisibilityTestResult *PATCHED* HLECache: 0x001cb830 -> D3DDevice_InsertCallback *PATCHED* HLECache: 0x001c1560 -> D3DDevice_InsertFence *PATCHED* HLECache: 0x001c34c0 -> D3DDevice_IsBusy *PATCHED* HLECache: 0x001cb810 -> D3DDevice_IsFencePending *PATCHED* HLECache: 0x001cb920 -> D3DDevice_KickOff *PATCHED* HLECache: 0x001d1ec0 -> D3DDevice_LazySetStateVB (no patch) HLECache: 0x001c2ff0 -> D3DDevice_LightEnable *PATCHED* HLECache: 0x001c5ce0 -> D3DDevice_LoadVertexShader *PATCHED* HLECache: 0x001c5d40 -> D3DDevice_LoadVertexShaderProgram *PATCHED* HLECache: 0x001cbda0 -> D3DDevice_MakeSpace (no patch) HLECache: 0x001c3f80 -> D3DDevice_PersistDisplay *PATCHED* HLECache: 0x001c4d60 -> D3DDevice_PrimeVertexCache *PATCHED* HLECache: 0x001c1130 -> D3DDevice_Release *PATCHED* HLECache: 0x001c1f50 -> D3DDevice_Reset *PATCHED* HLECache: 0x001d2ff0 -> D3DDevice_RunPushBuffer *PATCHED* HLECache: 0x001c5c80 -> D3DDevice_RunVertexStateShader *PATCHED* HLECache: 0x001c5db0 -> D3DDevice_SelectVertexShader *PATCHED* HLECache: 0x001c52d0 -> D3DDevice_SelectVertexShaderDirect *PATCHED* HLECache: 0x001caa00 -> D3DDevice_SetBackBufferScale *PATCHED* HLECache: 0x001c0fe0 -> D3DDevice_SetBackMaterial *PATCHED* HLECache: 0x001c9760 -> D3DDevice_SetDepthClipPlanes *PATCHED* HLECache: 0x001c13f0 -> D3DDevice_SetFlickerFilter *PATCHED* HLECache: 0x001c0c80 -> D3DDevice_SetGammaRamp *PATCHED* HLECache: 0x001c33f0 -> D3DDevice_SetIndices (no patch) HLECache: 0x001c2d30 -> D3DDevice_SetLight *PATCHED* HLECache: 0x001c0f90 -> D3DDevice_SetMaterial *PATCHED* HLECache: 0x001c36e0 -> D3DDevice_SetModelView *PATCHED* HLECache: 0x001c3360 -> D3DDevice_SetPalette *PATCHED* HLECache: 0x001c7090 -> D3DDevice_SetPixelShader *PATCHED* HLECache: 0x001c7290 -> D3DDevice_SetPixelShaderConstant *PATCHED* HLECache: 0x001c6c50 -> D3DDevice_SetPixelShaderProgram *PATCHED* HLECache: 0x001c8ba0 -> D3DDevice_SetRenderState_BackFillMode *PATCHED* HLECache: 0x001c8830 -> D3DDevice_SetRenderState_CullMode *PATCHED* HLECache: 0x001c9ae0 -> D3DDevice_SetRenderState_DoNotCullUncompressed *PATCHED* HLECache: 0x001c89f0 -> D3DDevice_SetRenderState_Dxt1NoiseEnable *PATCHED* HLECache: 0x001c8760 -> D3DDevice_SetRenderState_EdgeAntiAlias *PATCHED* HLECache: 0x001c8b50 -> D3DDevice_SetRenderState_FillMode *PATCHED* HLECache: 0x001c87e0 -> D3DDevice_SetRenderState_FogColor *PATCHED* HLECache: 0x001c88a0 -> D3DDevice_SetRenderState_FrontFace *PATCHED* HLECache: 0x001c8980 -> D3DDevice_SetRenderState_LineWidth *PATCHED* HLECache: 0x001c8af0 -> D3DDevice_SetRenderState_LogicOp *PATCHED* HLECache: 0x001c9b60 -> D3DDevice_SetRenderState_MultiSampleAntiAlias *PATCHED* HLECache: 0x001c9be0 -> D3DDevice_SetRenderState_MultiSampleMask *PATCHED* HLECache: 0x001c9b00 -> D3DDevice_SetRenderState_MultiSampleMode *PATCHED* HLECache: 0x001c9b30 -> D3DDevice_SetRenderState_MultiSampleRenderTargetMode *PATCHED* HLECache: 0x001c88e0 -> D3DDevice_SetRenderState_NormalizeNormals *PATCHED* HLECache: 0x001c99c0 -> D3DDevice_SetRenderState_OcclusionCullEnable *PATCHED* HLECache: 0x001c81f0 -> D3DDevice_SetRenderState_PSTextureModes *PATCHED* HLECache: 0x001c9aa0 -> D3DDevice_SetRenderState_RopZCmpAlwaysRead *PATCHED* HLECache: 0x001c9ac0 -> D3DDevice_SetRenderState_RopZRead *PATCHED* HLECache: 0x001c9c30 -> D3DDevice_SetRenderState_SampleAlpha *PATCHED* HLECache: 0x001c87a0 -> D3DDevice_SetRenderState_ShadowFunc *PATCHED* HLECache: 0x001c8220 -> D3DDevice_SetRenderState_Simple *PATCHED* HLECache: 0x001c9a30 -> D3DDevice_SetRenderState_StencilCullEnable *PATCHED* HLECache: 0x001c9890 -> D3DDevice_SetRenderState_StencilEnable *PATCHED* HLECache: 0x001c9920 -> D3DDevice_SetRenderState_StencilFail *PATCHED* HLECache: 0x001c8920 -> D3DDevice_SetRenderState_TextureFactor *PATCHED* HLECache: 0x001c8c00 -> D3DDevice_SetRenderState_TwoSidedLighting *PATCHED* HLECache: 0x001c8c80 -> D3DDevice_SetRenderState_VertexBlend *PATCHED* HLECache: 0x001c9990 -> D3DDevice_SetRenderState_YuvEnable *PATCHED* HLECache: 0x001c8a70 -> D3DDevice_SetRenderState_ZBias *PATCHED* HLECache: 0x001c9800 -> D3DDevice_SetRenderState_ZEnable *PATCHED* HLECache: 0x001c2000 -> D3DDevice_SetRenderTarget *PATCHED* HLECache: 0x001c2280 -> D3DDevice_SetRenderTargetFast *PATCHED* HLECache: 0x001c3c00 -> D3DDevice_SetScissors *PATCHED* HLECache: 0x001c40b0 -> D3DDevice_SetScreenSpaceOffset *PATCHED* HLECache: 0x001c5ea0 -> D3DDevice_SetShaderConstantMode *PATCHED* HLECache: 0x001c1440 -> D3DDevice_SetSoftDisplayFilter *PATCHED* HLECache: 0x001c4220 -> D3DDevice_SetStipple *PATCHED* HLECache: 0x001c5bb0 -> D3DDevice_SetStreamSource *PATCHED* HLECache: 0x001c1230 -> D3DDevice_SetSwapCallback *PATCHED* HLECache: 0x001c3180 -> D3DDevice_SetTexture *PATCHED* HLECache: 0x001c8e50 -> D3DDevice_SetTextureState_BorderColor *PATCHED* HLECache: 0x001c8de0 -> D3DDevice_SetTextureState_BumpEnv *PATCHED* HLECache: 0x001c8e90 -> D3DDevice_SetTextureState_ColorKeyColor *PATCHED* HLECache: 0x001c8cd0 -> D3DDevice_SetTextureState_TexCoordIndex *PATCHED* HLECache: 0x001c3900 -> D3DDevice_SetTile *PATCHED* HLECache: 0x001c0da0 -> D3DDevice_SetTransform *PATCHED* HLECache: 0x001c4e00 -> D3DDevice_SetVertexData2f *PATCHED* HLECache: 0x001c4ea0 -> D3DDevice_SetVertexData2s *PATCHED* HLECache: 0x001c4e40 -> D3DDevice_SetVertexData4f *PATCHED* HLECache: 0x001c4ee0 -> D3DDevice_SetVertexData4s *PATCHED* HLECache: 0x001c4f30 -> D3DDevice_SetVertexData4ub *PATCHED* HLECache: 0x001c4f80 -> D3DDevice_SetVertexDataColor *PATCHED* HLECache: 0x001c6110 -> D3DDevice_SetVertexShader *PATCHED* HLECache: 0x0016c050 -> D3DDevice_SetVertexShaderConstant *PATCHED* HLECache: 0x001c5730 -> D3DDevice_SetVertexShaderConstant1 *PATCHED* HLECache: 0x001c57e0 -> D3DDevice_SetVertexShaderConstant4 *PATCHED* HLECache: 0x001c5970 -> D3DDevice_SetVertexShaderConstantNotInline *PATCHED* HLECache: 0x001c6650 -> D3DDevice_SetVertexShaderInput *PATCHED* HLECache: 0x001c59e0 -> D3DDevice_SetVertexShaderInputDirect *PATCHED* HLECache: 0x001c1210 -> D3DDevice_SetVerticalBlankCallback *PATCHED* HLECache: 0x001c2b00 -> D3DDevice_SetViewport *PATCHED* HLECache: 0x001ca910 -> D3DDevice_Swap *PATCHED* HLECache: 0x001c10c0 -> D3DDevice_SwitchTexture *PATCHED* HLECache: 0x00000000 -> D3DDevice_UpdateOverlay (not patched) HLECache: 0x001c0be0 -> D3DPalette_Lock2 *PATCHED* HLECache: 0x001c77e0 -> D3DResource_AddRef *PATCHED* HLECache: 0x001c79e0 -> D3DResource_BlockUntilNotBusy *PATCHED* HLECache: 0x001c7900 -> D3DResource_IsBusy *PATCHED* HLECache: 0x001c79b0 -> D3DResource_Register *PATCHED* HLECache: 0x001c7820 -> D3DResource_Release *PATCHED* HLECache: 0x001cb220 -> D3DSurface_GetDesc *PATCHED* HLECache: 0x001cb240 -> D3DSurface_LockRect *PATCHED* HLECache: 0x001c6920 -> D3DTexture_GetSurfaceLevel2 *PATCHED* HLECache: 0x001c6970 -> D3DTexture_LockRect *PATCHED* HLECache: 0x001c0b40 -> D3DVertexBuffer_GetDesc (no patch) HLECache: 0x001c0af0 -> D3DVertexBuffer_Lock2 *PATCHED* HLECache: 0x001ce4f0 -> D3DVolumeTexture_LockBox *PATCHED* HLECache: 0x001cbe20 -> D3D_BlockOnResource *PATCHED* HLECache: 0x001cbaf0 -> D3D_BlockOnTime *PATCHED* HLECache: 0x001ce7c5 -> D3D_CMiniport_GetDisplayCapabilities *PATCHED* HLECache: 0x00000000 -> D3D_ClearStateBlockFlags HLECache: 0x001c7e50 -> D3D_GetDeviceCaps (no patch) HLECache: 0x001cbe00 -> D3D_KickOffAndWaitForIdle *PATCHED* HLECache: 0x001d0880 -> D3D_LazySetPointParams *PATCHED* HLECache: 0x00000000 -> D3D_RecordStateBlock HLECache: 0x001cba40 -> D3D_SetFence (no patch) HLECache: 0x001c8120 -> D3D_SetPushBufferSize (no patch) HLECache: 0x00000000 -> DeleteFiber HLECache: 0x001c8040 -> Direct3D_CheckDeviceMultiSampleType (no patch) HLECache: 0x001c8140 -> Direct3D_CreateDevice *PATCHED* HLECache: 0x0020c0b5 -> DirectSoundCreate *PATCHED* HLECache: 0x0020c0fc -> DirectSoundCreateBuffer *PATCHED* HLECache: 0x0020c153 -> DirectSoundCreateStream *PATCHED* HLECache: 0x00208cf4 -> DirectSoundDoWork *PATCHED* HLECache: 0x00206649 -> DirectSoundUseFullHRTF *PATCHED* HLECache: 0x001ce0a0 -> Get2DSurfaceDesc *PATCHED* HLECache: 0x001a93b2 -> GetExitCodeThread *PATCHED* HLECache: 0x001a90f1 -> GetOverlappedResult (no patch) HLECache: 0x001a91e0 -> GetThreadPriority *PATCHED* HLECache: 0x001a557a -> GetTimeZoneInformation (no patch) HLECache: 0x002088bc -> IDirectSound8_EnableHeadphones *PATCHED* HLECache: 0x00208b7e -> IDirectSoundBuffer_GetCurrentPosition *PATCHED* HLECache: 0x00208b62 -> IDirectSoundBuffer_GetStatus *PATCHED* HLECache: 0x00208bba -> IDirectSoundBuffer_Lock *PATCHED* HLECache: 0x00208a7e -> IDirectSoundBuffer_Play *PATCHED* HLECache: 0x002065f7 -> IDirectSoundBuffer_Release *PATCHED* HLECache: 0x0020a8c5 -> IDirectSoundBuffer_SetAllParameters *PATCHED* HLECache: 0x0020b289 -> IDirectSoundBuffer_SetBufferData *PATCHED* HLECache: 0x0020a8e5 -> IDirectSoundBuffer_SetConeAngles *PATCHED* HLECache: 0x00208b9e -> IDirectSoundBuffer_SetCurrentPosition *PATCHED* HLECache: 0x0020aa30 -> IDirectSoundBuffer_SetDistanceFactor *PATCHED* HLECache: 0x0020aa54 -> IDirectSoundBuffer_SetDopplerFactor *PATCHED* HLECache: 0x00208a0e -> IDirectSoundBuffer_SetEG *PATCHED* HLECache: 0x00208a2a -> IDirectSoundBuffer_SetFilter *PATCHED* HLECache: 0x0020b26d -> IDirectSoundBuffer_SetFormat *PATCHED* HLECache: 0x0020a871 -> IDirectSoundBuffer_SetFrequency *PATCHED* HLECache: 0x00208a46 -> IDirectSoundBuffer_SetHeadroom *PATCHED* HLECache: 0x0020aac0 -> IDirectSoundBuffer_SetI3DL2Source *PATCHED* HLECache: 0x002089f2 -> IDirectSoundBuffer_SetLFO *PATCHED* HLECache: 0x00208b42 -> IDirectSoundBuffer_SetLoopRegion *PATCHED* HLECache: 0x0020a95e -> IDirectSoundBuffer_SetMaxDistance *PATCHED* HLECache: 0x0020a982 -> IDirectSoundBuffer_SetMinDistance *PATCHED* HLECache: 0x00208a62 -> IDirectSoundBuffer_SetMixBinVolumes2 *PATCHED* HLECache: 0x0020a8a9 -> IDirectSoundBuffer_SetMixBins *PATCHED* HLECache: 0x00208bea -> IDirectSoundBuffer_SetNotificationPositions *PATCHED* HLECache: 0x0020a88d -> IDirectSoundBuffer_SetOutputBuffer *PATCHED* HLECache: 0x0020aae0 -> IDirectSoundBuffer_SetPlayRegion *PATCHED* HLECache: 0x0020a9c6 -> IDirectSoundBuffer_SetPosition *PATCHED* HLECache: 0x00000000 -> IDirectSoundBuffer_SetRolloffCurve (not patched) HLECache: 0x0020aa78 -> IDirectSoundBuffer_SetRolloffFactor *PATCHED* HLECache: 0x0020a9fb -> IDirectSoundBuffer_SetVelocity *PATCHED* HLECache: 0x002089ba -> IDirectSoundBuffer_SetVolume *PATCHED* HLECache: 0x00208ac6 -> IDirectSoundBuffer_Stop *PATCHED* HLECache: 0x00208c9e -> IDirectSoundBuffer_StopEx *PATCHED* HLECache: 0x00208c42 -> IDirectSoundBuffer_Use3DVoiceData *PATCHED* HLECache: 0x002065ab -> IDirectSound_AddRef *PATCHED* HLECache: 0x0020bd67 -> IDirectSound_CreateSoundBuffer *PATCHED* HLECache: 0x0020bd8b -> IDirectSound_CreateSoundStream *PATCHED* HLECache: 0x0020882c -> IDirectSound_DownloadEffectsImage *PATCHED* HLECache: 0x00208914 -> IDirectSound_GetOutputLevels *PATCHED* HLECache: 0x002065c1 -> IDirectSound_Release *PATCHED* HLECache: 0x0020bdaf -> IDirectSound_SetAllParameters *PATCHED* HLECache: 0x0020bdcf -> IDirectSound_SetDistanceFactor *PATCHED* HLECache: 0x0020bdf3 -> IDirectSound_SetDopplerFactor *PATCHED* HLECache: 0x0020beef -> IDirectSound_SetI3DL2Listener *PATCHED* HLECache: 0x002088d8 -> IDirectSound_SetMixBinHeadroom *PATCHED* HLECache: 0x0020be17 -> IDirectSound_SetOrientation *PATCHED* HLECache: 0x0020be61 -> IDirectSound_SetPosition *PATCHED* HLECache: 0x0020be96 -> IDirectSound_SetRolloffFactor *PATCHED* HLECache: 0x0020beba -> IDirectSound_SetVelocity *PATCHED* HLECache: 0x001ce450 -> Lock2DSurface *PATCHED* HLECache: 0x001ce4f0 -> Lock3DSurface *PATCHED* HLECache: 0x001cbc60 -> MakeRequestedSpace (no patch) HLECache: 0x001a876f -> OutputDebugStringA *PATCHED* HLECache: 0x001a9368 -> QueueUserAPC *PATCHED* HLECache: 0x001a9307 -> RaiseException *PATCHED* HLECache: 0x001a918e -> SetThreadPriority *PATCHED* HLECache: 0x001a9234 -> SetThreadPriorityBoost *PATCHED* HLECache: 0x001a7770 -> SignalObjectAndWait *PATCHED* HLECache: 0x00000000 -> SwitchToFiber HLECache: 0x0020c3ba -> WaveFormat_CreateXboxAdpcmFormat (no patch) HLECache: 0x00206749 -> XAudioCreateAdpcmFormat *PATCHED* HLECache: 0x00208d1d -> XAudioDownloadEffectsImage *PATCHED* HLECache: 0x00000000 -> XFONT_OpenBitmapFontFromMemory HLECache: 0x001a5e7c -> XFormatUtilityDrive *PATCHED* HLECache: 0x00000000 -> XGCompressRect HLECache: 0x00203dcc -> XGIsSwizzledFormat *PATCHED* HLECache: 0x00205d63 -> XGSetIndexBufferHeader (no patch) HLECache: 0x00205ccc -> XGSetTextureHeader *PATCHED* HLECache: 0x00205d4b -> XGSetVertexBufferHeader (no patch) HLECache: 0x00205599 -> XGSwizzleBox *PATCHED* HLECache: 0x002057f4 -> XGUnswizzleBox (no patch) HLECache: 0x00000000 -> XGWriteSurfaceOrTextureToXPR (not patched) HLECache: 0x0024adba -> XGetDeviceChanges *PATCHED* HLECache: 0x0024d0e3 -> XGetDeviceEnumerationStatus *PATCHED* HLECache: 0x0024ad98 -> XGetDevices *PATCHED* HLECache: 0x001a6462 -> XGetLaunchInfo (no patch) HLECache: 0x0024bb25 -> XID_fCloseDevice (no patch) HLECache: 0x0024a078 -> XInitDevices *PATCHED* HLECache: 0x0024ae7d -> XInputClose *PATCHED* HLECache: 0x0024ae89 -> XInputGetCapabilities *PATCHED* HLECache: 0x00000000 -> XInputGetDeviceDescription (not patched) HLECache: 0x0024b061 -> XInputGetState *PATCHED* HLECache: 0x0024ae27 -> XInputOpen *PATCHED* HLECache: 0x0024b107 -> XInputPoll *PATCHED* HLECache: 0x0024b0d4 -> XInputSetState *PATCHED* HLECache: 0x001a633f -> XLaunchNewImageA (no patch) HLECache: 0x001a5f0a -> XMountAlternateTitleA *PATCHED* HLECache: 0x00000000 -> XMountMUA (not patched) HLECache: 0x00000000 -> XMountMURootA (not patched) HLECache: 0x001a5d77 -> XMountUtilityDrive *PATCHED* HLECache: 0x001a94b0 -> XRegisterThreadNotifyRoutine (no patch) HLECache: 0x001a94f9 -> XSetProcessQuantumLength *PATCHED* HLECache: 0x001a60cd -> XUnmountAlternateTitleA *PATCHED* HLECache: 0x00000000 -> XapiFiberStartup HLECache: 0x00000000 -> timeKillEvent (not patched) HLECache: 0x00000000 -> timeSetEvent (not patched) [0x3008] EmuWarn: X_D3DFMT_F24S8 -> D3DFMT_D24S8 [0x3008] EmuWarn: X_D3DFMT_F16 -> D3DFMT_D16 [0x3008] EmuWarn: X_D3DFMT_LIN_F24S8 -> D3DFMT_D24S8 [0x3008] EmuWarn: X_D3DFMT_LIN_F16 -> D3DFMT_D16 [0x3008] EmuWarn: EmuD3D8: FourCC format UYVY not previously detected via CheckDeviceFormat()! Enabling it. [0x3008] EmuWarn: EmuD3D8: FourCC format YUY2 not previously detected via CheckDeviceFormat()! Enabling it. [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) EmuPatch_DirectSoundUseFullHRTF unimplemented! EmuPatch_IDirectSound_DownloadEffectsImage unimplemented! EmuPatch_IDirectSound_SetI3DL2Listener unimplemented! [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000010) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x0000000C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000010) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x0000000F) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x0000000D) [Unknown address] [0x3008] EmuWarn: MultiSampleType 0x00001021 is not supported! [0x3008] EmuWarn: X_D3DFMT_F24S8 -> D3DFMT_D24S8 [0x3008] EmuWarn: X_D3DFMT_F16 -> D3DFMT_D16 [0x3008] EmuWarn: X_D3DFMT_LIN_F24S8 -> D3DFMT_D24S8 [0x3008] EmuWarn: X_D3DFMT_LIN_F16 -> D3DFMT_D16 [0x3008] EmuWarn: EmuD3D8: FourCC format UYVY not previously detected via CheckDeviceFormat()! Enabling it. [0x3008] EmuWarn: EmuD3D8: FourCC format YUY2 not previously detected via CheckDeviceFormat()! Enabling it. DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w mad oPos.xyz, r12, r1.x, c-37 ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 7 i = 8 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r10.yzw, c8.yyzx +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r11.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r11.xyz, c14.xyz, r10.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 44 i = 46 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r10.yzw, c104.yyzx rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r11.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.x, r8.x, r9.x mul r11.xyz, c110.xyz, r10.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mul r10.xyz, r11.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 59 i = 62 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 75 i = 78 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r3, r5, c96 add oPos.x, r3, c96.w dp3 r3, r5, c97 add oPos.y, r3, c97.w dp3 r3, r5, c98 add oPos.z, r3, c98.w dp3 r3, r5, c99 add oPos.w, r3, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 91 i = 94 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 19 i = 20 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mov r0.w, c5.w mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x +rsq r1.z, r6.w dph oPos.x, r5, c0 +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c6.w add r10.yzw, c4.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz +rcc r1.x, r12.w dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 55 i = 58 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mov r0.w, c101.w mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x rsq r1.z, r6.w dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c102.w add r10.yzw, c100.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c97 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (50) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w rcp r9.y, c11.w mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dph oPos.x, r5, c0 +rsq r1.x, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.x +rsq r1.z, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.xzw, c5.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.z +rsq r1.x, r8.y mul r11.w, r8.x, r1.z dp3 r7.w, r4.wxz, r4.wxz mul r11.w, r11.w, r1.y mul r10.x, r8.y, r1.x +rsq r1.y, r7.w min r11.w, r11.w, c6.w mul r9.y, r10.x, r9.y mul r8.xzw, r4.xxzw, r1.y add r8.y, c6.w, -r11.w min r9.y, r9.y, c6.w add r8.xzw, c4.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.yzw, r9.xxzw, r1.x add r10.x, c6.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.y, r6.xyz, r10.wyz +rsq r1.x, r7.w min r11.w, r10.x, c6.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c6.x mad r9.y, r9.y, c6.y, c6.y mul r10.yzw, r8.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y +rcc r1.x, r12.w mul r9.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r9.wxz, r8.x, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 71 i = 74 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w rcp r9.y, c107.w mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r0, r5, c96 add oPos.x, r0, c96.w rsq r1.x, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.x rsq r1.z, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.xzw, c101.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.z rsq r1.x, r8.y mul r11.w, r8.x, r1.z dp3 r7.w, r4.wxz, r4.wxz mul r11.w, r11.w, r1.y mul r10.x, r8.y, r1.x rsq r1.y, r7.w min r11.w, r11.w, c102.w mul r9.y, r10.x, r9.y mul r8.xzw, r4.xxzw, r1.y add r8.y, c102.w, -r11.w min r9.y, r9.y, c102.w add r8.xzw, c100.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.yzw, r9.xxzw, r1.x add r10.x, c102.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.y, r6.xyz, r10.wyz rsq r1.x, r7.w min r11.w, r10.x, c102.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c102.x mad r9.y, r9.y, c102.y, c102.y mul r10.yzw, r8.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y mul r9.xzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c101.w mad r10.xyz, r9.wxz, r8.x, r11.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w rcp r9.y, c11.w mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +rcp r1.x, c12.w mov r7.xyz, c8.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c15.yyzx, r7.yyzx +rsq r1.z, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.xzw, c12.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w +rsq r1.z, r11.w dp3 r10.x, r4.wxz, r4.wxz mul r8.x, r8.x, r1.w mul r11.w, r11.w, r1.z +rsq r1.w, r10.x add r3.yzw, c5.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y dp3 r7.w, r3.wyz, r3.wyz min r8.x, r8.x, c6.w mul r9.y, r11.w, r9.y +rsq r1.y, r7.w mul r11.w, r10.x, r1.w add r8.x, c6.w, -r8.x min r9.y, r9.y, c6.w mul r11.w, r11.w, r1.x mul r3.yzw, r3.yyzw, r1.y dp3 r10.x, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.yzw, r8.yyzw, r1.z add r8.y, c6.w, -r9.y min r9.y, r11.w, c6.w add r3.yzw, c4.yyzx, r3.yyzw max r8.x, r8.x, c6.x mad r11.w, r10.x, c6.y, c6.y dp3 r10.y, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.xzw, r4.xxzw, r1.w add r8.z, c6.w, -r9.y dp3 r7.w, r3.wyz, r3.wyz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.y, r11.w, c6.y, c6.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.yyzw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c16.yyzx, r7.yyzx +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 87 i = 90 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w rcp r9.y, c107.w mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y rcp r1.x, c108.w mov r7.xyz, c104.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c111.yyzx, r7.yyzx rsq r1.z, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.xzw, c108.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w rsq r1.z, r11.w dp3 r10.x, r4.wxz, r4.wxz mul r8.x, r8.x, r1.w mul r11.w, r11.w, r1.z rsq r1.w, r10.x add r3.yzw, c101.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y dp3 r7.w, r3.wyz, r3.wyz min r8.x, r8.x, c102.w mul r9.y, r11.w, r9.y rsq r1.y, r7.w mul r11.w, r10.x, r1.w add r8.x, c102.w, -r8.x min r9.y, r9.y, c102.w mul r11.w, r11.w, r1.x mul r3.yzw, r3.yyzw, r1.y dp3 r10.x, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.yzw, r8.yyzw, r1.z add r8.y, c102.w, -r9.y min r9.y, r11.w, c102.w add r3.yzw, c100.yyzx, r3.yyzw max r8.x, r8.x, c102.x mad r11.w, r10.x, c102.y, c102.y dp3 r10.y, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.xzw, r4.xxzw, r1.w add r8.z, c102.w, -r9.y dp3 r7.w, r3.wyz, r3.wyz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.y, r11.w, c102.y, c102.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.yyzw, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c112.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w dp3 r6.x, v1.xyz, c32.xyz mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +rcp r1.x, c11.w dp3 r6.y, v1.xyz, c33.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z +rcp r1.z, c12.w dp3 r6.z, v1.xyz, c34.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +rcp r1.w, c13.w dp4 r5.y, v0, r3 +mov oD0.w, c7.w dp4 r5.z, v0, r4 dp3 r6.w, r6.xyz, r6.xyz add r7.xyz, c10.xyz, -r5.xyz rsq r11.x, r6.w dp3 r8.x, r7.xyz, r7.xyz mul r6.xyz, r6.xyz, r11.x add r11.yzw, c11.yyzx, -r5.yyzx rsq r11.x, r8.x dp3 r8.y, r11.wyz, r11.wyz add r10.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r10.wyz, r10.wyz add r9.yzw, c13.yyzx, -r5.yyzx rsq r9.x, r8.z dp3 r8.w, r9.wyz, r9.wyz mul r8.x, r8.x, r11.x rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r4.yzw, c5.yyzx, -r5.yyzx min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.x mov r3.xzw, c8.yyzx dp3 r6.w, r4.wyz, r4.wyz mul r7.xyz, r7.xyz, r11.x add r8.x, c6.w, -r8.x min r11.x, r8.y, c6.w +rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r8.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r11.wyz, r10.x add r11.y, c6.w, -r11.x min r11.x, r8.y, c6.w mul r11.z, r8.z, r1.w mul r4.yzw, r4.yyzw, r1.x max r8.x, r8.x, c6.x mad r11.w, r8.w, c6.y, c6.y dp3 r10.x, r6.xyz, r7.xyz min r8.y, r11.y, c6.w mul r7.xyz, r10.wyz, r9.x add r8.z, c6.w, -r11.x min r9.x, r11.z, c6.w add r11.xyz, c4.xyz, r4.wyz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x mad r11.w, r10.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r9.wyz, r7.w add r8.w, c6.w, -r9.x mul r10.xyw, c14.xyyz, r3.wxxz dp3 r7.w, r11.xyz, r11.xyz mul r8.y, r8.y, r11.w max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r10.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r10.xyz, r10.xyw, r8.x mul r7.xyw, c15.zyyx, r3.zxxw mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r7.wyx, r8.y, r10.xyz mul r9.xyz, c16.xyz, r3.wxz mul r7.xyz, r11.xyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r9.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r3.wxz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 103 i = 106 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w dp3 r6.x, v1.xyz, c128.xyz mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y rcp r1.x, c107.w dp3 r6.y, v1.xyz, c129.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z rcp r1.z, c108.w dp3 r6.z, v1.xyz, c130.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 rcp r1.w, c109.w dp4 r5.y, v0, r3 mov oD0.w, c103.w dp4 r5.z, v0, r4 dp3 r6.w, r6.xyz, r6.xyz add r7.xyz, c106.xyz, -r5.xyz rsq r11.x, r6.w dp3 r8.x, r7.xyz, r7.xyz mul r6.xyz, r6.xyz, r11.x add r11.yzw, c107.yyzx, -r5.yyzx rsq r11.x, r8.x dp3 r8.y, r11.wyz, r11.wyz add r10.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r10.wyz, r10.wyz add r9.yzw, c109.yyzx, -r5.yyzx rsq r9.x, r8.z dp3 r8.w, r9.wyz, r9.wyz mul r8.x, r8.x, r11.x rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r4.yzw, c101.yyzx, -r5.yyzx min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.x mov r3.xzw, c104.yyzx dp3 r6.w, r4.wyz, r4.wyz mul r7.xyz, r7.xyz, r11.x add r8.x, c102.w, -r8.x min r11.x, r8.y, c102.w rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r8.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r11.wyz, r10.x add r11.y, c102.w, -r11.x min r11.x, r8.y, c102.w mul r11.z, r8.z, r1.w mul r4.yzw, r4.yyzw, r1.x max r8.x, r8.x, c102.x mad r11.w, r8.w, c102.y, c102.y dp3 r10.x, r6.xyz, r7.xyz min r8.y, r11.y, c102.w mul r7.xyz, r10.wyz, r9.x add r8.z, c102.w, -r11.x min r9.x, r11.z, c102.w add r11.xyz, c100.xyz, r4.wyz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x mad r11.w, r10.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r9.wyz, r7.w add r8.w, c102.w, -r9.x mul r10.xyw, c110.xyyz, r3.wxxz dp3 r7.w, r11.xyz, r11.xyz mul r8.y, r8.y, r11.w max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r10.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r10.xyz, r10.xyw, r8.x mul r7.xyw, c111.zyyx, r3.zxxw mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r7.wyx, r8.y, r10.xyz mul r9.xyz, c112.xyz, r3.wxz mul r7.xyz, r11.xyz, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.w, r8.w, r9.w mad r10.xyz, r9.xyz, r8.z, r10.xyz mul r11.xyz, c113.xyz, r3.wxz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov oT0, v2 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 8 i = 9 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov oT0, v2 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz +mov oT0, v2 mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r10.yzw, c8.yyzx +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r11.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r11.xyz, c14.xyz, r10.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 45 i = 47 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mov oT0, v2 mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r10.yzw, c104.yyzx rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r11.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.x, r8.x, r9.x mul r11.xyz, c110.xyz, r10.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mul r10.xyz, r11.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w +mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 60 i = 63 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w +mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 76 i = 79 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r3, r5, c96 add oPos.x, r3, c96.w dp3 r3, r5, c97 add oPos.y, r3, c97.w dp3 r3, r5, c98 add oPos.z, r3, c98.w dp3 r3, r5, c99 add oPos.w, r3, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz +mov oT0, v2 mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 92 i = 95 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mov oT0, v2 mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x mov oT0, v2 mul r2, v4.x, c[a0.x] mul r3, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y mad r2, v4.y, c[a0.x], r2 mad r3, v4.y, c[a0.x+1], r3 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z mad r2, v4.z, c[a0.x], r2 mad r3, v4.z, c[a0.x+1], r3 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 20 i = 21 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x mov oT0, v2 mul r2, v4.x, c[a0.x+96] mul r3, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mad r2, v4.y, c[a0.x+96], r2 mad r3, v4.y, c[a0.x+97], r3 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mad r2, v4.z, c[a0.x+96], r2 mad r3, v4.z, c[a0.x+97], r3 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz +mov oT0, v2 mul r2, v4.x, c[a0.x] mul r3, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v4.y, c[a0.x], r2 mad r3, v4.y, c[a0.x+1], r3 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z mov r0.w, c5.w mad r2, v4.z, c[a0.x], r2 mad r3, v4.z, c[a0.x+1], r3 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x +rsq r1.z, r6.w dph oPos.x, r5, c0 +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c6.w add r10.yzw, c4.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz +rcc r1.x, r12.w dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 56 i = 59 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mov oT0, v2 mul r2, v4.x, c[a0.x+96] mul r3, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v4.y, c[a0.x+96], r2 mad r3, v4.y, c[a0.x+97], r3 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mov r0.w, c101.w mad r2, v4.z, c[a0.x+96], r2 mad r3, v4.z, c[a0.x+97], r3 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x rsq r1.z, r6.w dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c102.w add r10.yzw, c100.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c97 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (51) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r3, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz mad r2, v4.y, c[a0.x], r2 mad r3, v4.y, c[a0.x+1], r3 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z mul r11.xyz, c14.xyz, r7.xyz mad r2, v4.z, c[a0.x], r2 mad r3, v4.z, c[a0.x+1], r3 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dph oPos.x, r5, c0 +rsq r1.z, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c5.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w +rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z +rsq r1.y, r7.w min r9.y, r9.y, c6.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c6.w, -r9.y min r9.y, r11.w, c6.w add r8.xzw, c4.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c6.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.y, r6.xyz, r10.wyz +rsq r1.x, r7.w min r11.w, r10.x, c6.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c6.x mad r9.y, r9.y, c6.y, c6.y mul r10.yzw, r8.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y +rcc r1.x, r12.w mul r9.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r9.wxz, r8.x, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 72 i = 75 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r3, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mad r2, v4.y, c[a0.x+96], r2 mad r3, v4.y, c[a0.x+97], r3 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mul r11.xyz, c110.xyz, r7.xyz mad r2, v4.z, c[a0.x+96], r2 mad r3, v4.z, c[a0.x+97], r3 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.z, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c101.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z rsq r1.y, r7.w min r9.y, r9.y, c102.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c102.w, -r9.y min r9.y, r11.w, c102.w add r8.xzw, c100.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c102.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.y, r6.xyz, r10.wyz rsq r1.x, r7.w min r11.w, r10.x, c102.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c102.x mad r9.y, r9.y, c102.y, c102.y mul r10.yzw, r8.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y mul r9.xzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c101.w mad r10.xyz, r9.wxz, r8.x, r11.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r3, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz mad r2, v4.y, c[a0.x], r2 mad r3, v4.y, c[a0.x+1], r3 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v4.z, c[a0.x], r2 mad r3, v4.z, c[a0.x+1], r3 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c15.yyzx, r7.yyzx +rsq r1.w, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dph oPos.x, r5, c0 +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c5.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c6.w mul r11.w, r11.w, r1.x +rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c6.w, -r8.x min r11.w, r11.w, c6.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c6.w, -r11.w min r9.y, r9.y, c6.w add r3.xzw, c4.yyzx, r3.xxzw max r8.x, r8.x, c6.x mad r11.w, r10.y, c6.y, c6.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c6.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c6.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.y, r11.w, c6.y, c6.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c16.yyzx, r7.yyzx +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 88 i = 91 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r3, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mad r2, v4.y, c[a0.x+96], r2 mad r3, v4.y, c[a0.x+97], r3 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v4.z, c[a0.x+96], r2 mad r3, v4.z, c[a0.x+97], r3 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c111.yyzx, r7.yyzx rsq r1.w, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r0, r5, c96 add oPos.x, r0, c96.w rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c101.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c102.w mul r11.w, r11.w, r1.x rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c102.w, -r8.x min r11.w, r11.w, c102.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c102.w, -r11.w min r9.y, r9.y, c102.w add r3.xzw, c100.yyzx, r3.xxzw max r8.x, r8.x, c102.x mad r11.w, r10.y, c102.y, c102.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c102.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c102.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.y, r11.w, c102.y, c102.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c112.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r3, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz mad r2, v4.y, c[a0.x], r2 mad r3, v4.y, c[a0.x+1], r3 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z +rcp r1.w, c13.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v4.z, c[a0.x], r2 mad r3, v4.z, c[a0.x+1], r3 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +mov oD0.w, c7.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c13.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c5.yyzx, -r5.yyzx min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c6.w, -r8.x min r11.w, r8.y, c6.w +rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c6.w, -r11.w min r9.x, r8.y, c6.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c6.x mad r9.w, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c6.w mul r10.xyz, r4.wyz, r9.y add r8.z, c6.w, -r9.x min r9.y, r9.z, c6.w add r4.xzw, c4.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c6.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c6.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c6.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 104 i = 107 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r3, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mad r2, v4.y, c[a0.x+96], r2 mad r3, v4.y, c[a0.x+97], r3 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z rcp r1.w, c109.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v4.z, c[a0.x+96], r2 mad r3, v4.z, c[a0.x+97], r3 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 mov oD0.w, c103.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c109.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c101.yyzx, -r5.yyzx min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c102.w, -r8.x min r11.w, r8.y, c102.w rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c102.w, -r11.w min r9.x, r8.y, c102.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c102.x mad r9.w, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c102.w mul r10.xyz, r4.wyz, r9.y add r8.z, c102.w, -r9.x min r9.y, r9.z, c102.w add r4.xzw, c100.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c102.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c102.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c102.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c113.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov oT0, v1 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 8 i = 9 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov oT0, v1 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz +mov oT0, v1 dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r10.yzw, c8.yyzx +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r11.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r11.xyz, c14.xyz, r10.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 45 i = 47 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz mov oT0, v1 dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r10.yzw, c104.yyzx rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r11.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.x, r8.x, r9.x mul r11.xyz, c110.xyz, r10.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mul r10.xyz, r11.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz +mov oT0, v1 dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 60 i = 63 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz mov oT0, v1 dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz +mov oT0, v1 dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 76 i = 79 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz mov oT0, v1 dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r3, r5, c96 add oPos.x, r3, c96.w dp3 r3, r5, c97 add oPos.y, r3, c97.w dp3 r3, r5, c98 add oPos.z, r3, c98.w dp3 r3, r5, c99 add oPos.w, r3, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz +mov oT0, v1 dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 92 i = 95 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz mov oT0, v1 dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +mov oT0, v2 mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz dp4 r5.x, v0, r2 dp3 r6.w, r6.xyz, r6.xyz dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 +rsq r1.x, r6.w mul r6.xyz, r6.xyz, r1.x mad r5.xyz, r6.xyz, c18.xyz, r5.xyz dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 27 i = 28 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x mov oT0, v2 mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz dp4 r5.x, v0, r2 dp3 r6.w, r6.xyz, r6.xyz dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 rsq r1.x, r6.w mul r6.xyz, r6.xyz, r1.x mad r5.xyz, r6.xyz, c114.xyz, r5.xyz dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz +mov oT0, v2 mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mov r0.w, c5.w mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x +rsq r1.z, r6.w dph oPos.x, r5, c0 +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c6.w add r10.yzw, c4.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz +rcc r1.x, r12.w dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 56 i = 59 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mov oT0, v2 mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mov r0.w, c101.w mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x rsq r1.z, r6.w dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c102.w add r10.yzw, c100.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c97 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (51) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dph oPos.x, r5, c0 +rsq r1.z, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c5.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w +rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z +rsq r1.y, r7.w min r9.y, r9.y, c6.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c6.w, -r9.y min r9.y, r11.w, c6.w add r8.xzw, c4.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c6.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.y, r6.xyz, r10.wyz +rsq r1.x, r7.w min r11.w, r10.x, c6.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c6.x mad r9.y, r9.y, c6.y, c6.y mul r10.yzw, r8.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y +rcc r1.x, r12.w mul r9.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r9.wxz, r8.x, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 72 i = 75 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.z, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c101.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z rsq r1.y, r7.w min r9.y, r9.y, c102.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c102.w, -r9.y min r9.y, r11.w, c102.w add r8.xzw, c100.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c102.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.y, r6.xyz, r10.wyz rsq r1.x, r7.w min r11.w, r10.x, c102.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c102.x mad r9.y, r9.y, c102.y, c102.y mul r10.yzw, r8.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y mul r9.xzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c101.w mad r10.xyz, r9.wxz, r8.x, r11.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c15.yyzx, r7.yyzx +rsq r1.w, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dph oPos.x, r5, c0 +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c5.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c6.w mul r11.w, r11.w, r1.x +rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c6.w, -r8.x min r11.w, r11.w, c6.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c6.w, -r11.w min r9.y, r9.y, c6.w add r3.xzw, c4.yyzx, r3.xxzw max r8.x, r8.x, c6.x mad r11.w, r10.y, c6.y, c6.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c6.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c6.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.y, r11.w, c6.y, c6.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c16.yyzx, r7.yyzx +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 88 i = 91 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c111.yyzx, r7.yyzx rsq r1.w, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r0, r5, c96 add oPos.x, r0, c96.w rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c101.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c102.w mul r11.w, r11.w, r1.x rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c102.w, -r8.x min r11.w, r11.w, c102.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c102.w, -r11.w min r9.y, r9.y, c102.w add r3.xzw, c100.yyzx, r3.xxzw max r8.x, r8.x, c102.x mad r11.w, r10.y, c102.y, c102.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c102.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c102.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.y, r11.w, c102.y, c102.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c112.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(3, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v2.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v3.x, c[a0.x] mul r3, v3.x, c[a0.x+1] mul r4, v3.x, c[a0.x+2] mov a0.x, v2.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz mad r2, v3.y, c[a0.x], r2 mad r3, v3.y, c[a0.x+1], r3 mad r4, v3.y, c[a0.x+2], r4 mov a0.x, v2.z +rcp r1.w, c13.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v3.z, c[a0.x], r2 mad r3, v3.z, c[a0.x+1], r3 mad r4, v3.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +mov oD0.w, c7.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c13.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c5.yyzx, -r5.yyzx min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c6.w, -r8.x min r11.w, r8.y, c6.w +rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c6.w, -r11.w min r9.x, r8.y, c6.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c6.x mad r9.w, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c6.w mul r10.xyz, r4.wyz, r9.y add r8.z, c6.w, -r9.x min r9.y, r9.z, c6.w add r4.xzw, c4.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c6.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c6.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c6.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 104 i = 107 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v2.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v3.x, c[a0.x+96] mul r3, v3.x, c[a0.x+97] mul r4, v3.x, c[a0.x+98] mov a0.x, v2.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mad r2, v3.y, c[a0.x+96], r2 mad r3, v3.y, c[a0.x+97], r3 mad r4, v3.y, c[a0.x+98], r4 mov a0.x, v2.z rcp r1.w, c109.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v3.z, c[a0.x+96], r2 mad r3, v3.z, c[a0.x+97], r3 mad r4, v3.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 mov oD0.w, c103.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c109.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c101.yyzx, -r5.yyzx min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c102.w, -r8.x min r11.w, r8.y, c102.w rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c102.w, -r11.w min r9.x, r8.y, c102.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c102.x mad r9.w, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c102.w mul r10.xyz, r4.wyz, r9.y add r8.z, c102.w, -r9.x min r9.y, r9.z, c102.w add r4.xzw, c100.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c102.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c102.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c102.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c113.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov r3.xyz, v1 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mov r3.w, c6 +mov oT0, v2 mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12, r1.x, c-37 ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 10 i = 15 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov r3.xyz, v1 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w mov r3.w, c102 mov oT0, v2 dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz +mov oT0, v2 mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r3.xyz, v1.xyz +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mov r3.w, c6.w max r8.x, r8.x, c6.x mad r9.x, r9.x, c6.y, c6.y mov r7.xyz, c8.xyz mul r11.yzw, r11.yyzw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r10.xyz, c14.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mul r10.xyz, r10.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 47 i = 53 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mov oT0, v2 mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r3.xyz, v1.xyz rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mov r3.w, c102.w max r8.x, r8.x, c102.x mad r9.x, r9.x, c102.y, c102.y mov r7.xyz, c104.xyz mul r11.yzw, r11.yyzw, r1.x dp3 r10, r5, c96 add oPos.x, r10, c96.w dp3 r10, r5, c97 add oPos.y, r10, c97.w dp3 r10, r5, c98 add oPos.z, r10, c98.w dp3 r10, r5, c99 add oPos.w, r10, c99.w mul r8.x, r8.x, r9.x mul r10.xyz, c110.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mul r10.xyz, r10.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w +mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mov r3.xyz, v1.xyz mov r3.w, c6.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 62 i = 69 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mov r3.xyz, v1.xyz mov r3.w, c102.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w +mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mov r3.xyz, v1.xyz mov r3.w, c6.w mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 78 i = 85 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mov r3.xyz, v1.xyz mov r3.w, c102.w mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz +mov oT0, v2 mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mov r3.xyz, v1.xyz mov r3.w, c6.w mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 94 i = 101 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mov oT0, v2 mul r9.x, r8.x, r1.w rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mov r3.xyz, v1.xyz mov r3.w, c102.w mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x mov r3.xyz, v1.xyz mul r2, v4.x, c[a0.x] mul r11, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y mov r3.w, c6.w +mov oT0, v2 mad r2, v4.y, c[a0.x], r2 mad r11, v4.y, c[a0.x+1], r11 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z dp4 oT1.x, r3, c20 mad r2, v4.z, c[a0.x], r2 mad r11, v4.z, c[a0.x+1], r11 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp4 oT1.y, r3, c21 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz dp4 oT1.z, r3, c22 +rcc r1.x, r12.w dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 24 i = 27 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x mov r3.xyz, v1.xyz mul r2, v4.x, c[a0.x+96] mul r11, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mov r3.w, c102.w mov oT0, v2 mad r2, v4.y, c[a0.x+96], r2 mad r11, v4.y, c[a0.x+97], r11 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z dp4 oT1.x, r3, c116 mad r2, v4.z, c[a0.x+96], r2 mad r11, v4.z, c[a0.x+97], r11 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp4 oT1.y, r3, c117 dp3 r10, r5, c96 add oPos.x, r10, c96.w dp3 r10, r5, c97 add oPos.y, r10, c97.w dp3 r10, r5, c98 add oPos.z, r10, c98.w dp3 r10, r5, c99 add oPos.w, r10, c99.w dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov r3.xyz, v1.xyz +mov oD0.w, c7.w mul r2, v4.x, c[a0.x] mul r11, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y mov r3.w, c6.w +mov oT0, v2 mad r2, v4.y, c[a0.x], r2 mad r11, v4.y, c[a0.x+1], r11 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z mov r7.xyz, c8.xyz mad r2, v4.z, c[a0.x], r2 mad r11, v4.z, c[a0.x+1], r11 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mul r10.yzw, r10.yyzw, r1.x +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r10.wyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r11.yzw, r11.yyzw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r10.xyz, c14.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mul r10.xyz, r10.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 59 i = 65 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov r3.xyz, v1.xyz mov oD0.w, c103.w mul r2, v4.x, c[a0.x+96] mul r11, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mov r3.w, c102.w mov oT0, v2 mad r2, v4.y, c[a0.x+96], r2 mad r11, v4.y, c[a0.x+97], r11 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mov r7.xyz, c104.xyz mad r2, v4.z, c[a0.x+96], r2 mad r11, v4.z, c[a0.x+97], r11 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r11.wyz, r11.wyz mul r11.x, r8.x, r1.x rsq r1.z, r6.w mul r10.yzw, r10.yyzw, r1.x rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r10.wyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r11.yzw, r11.yyzw, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r8.x, r9.x mul r10.xyz, c110.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mul r10.xyz, r10.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov r3.xyz, v1.xyz +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r11, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz +mov oT0, v2 mad r2, v4.y, c[a0.x], r2 mad r11, v4.y, c[a0.x+1], r11 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z mov r3.w, c6.w mad r2, v4.z, c[a0.x], r2 mad r11, v4.z, c[a0.x+1], r11 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz mul r10.xyz, c14.xyz, r7.xyz +rsq r1.z, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c5.yyzx, -r5.yyzx mul r11.yzw, r11.yyzw, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.y, r9.y, c6.w mul r11.x, r11.x, r1.x mul r8.yzw, r4.yyzw, r1.y add r8.x, c6.w, -r9.y min r9.y, r11.x, c6.w add r8.yzw, c4.yyzx, r8.yyzw dp3 r11.x, r6.xyz, r11.wyz min r8.x, r8.x, c6.w mul r11.yzw, r9.xxzw, r1.z add r10.w, c6.w, -r9.y dp3 r7.w, r8.wyz, r8.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r9.y, r6.xyz, r11.wyz +rsq r1.x, r7.w min r11.y, r10.w, c6.w mul r8.x, r8.x, r9.x max r11.y, r11.y, c6.x mad r9.y, r9.y, c6.y, c6.y mul r11.xzw, r8.yyzw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r11.y, r9.y mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r9.yzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wxz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 74 i = 81 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov r3.xyz, v1.xyz rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r11, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mov oT0, v2 mad r2, v4.y, c[a0.x+96], r2 mad r11, v4.y, c[a0.x+97], r11 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mov r3.w, c102.w mad r2, v4.z, c[a0.x+96], r2 mad r11, v4.z, c[a0.x+97], r11 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz mul r10.xyz, c110.xyz, r7.xyz rsq r1.z, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c101.yyzx, -r5.yyzx mul r11.yzw, r11.yyzw, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.y, r9.y, c102.w mul r11.x, r11.x, r1.x mul r8.yzw, r4.yyzw, r1.y add r8.x, c102.w, -r9.y min r9.y, r11.x, c102.w add r8.yzw, c100.yyzx, r8.yyzw dp3 r11.x, r6.xyz, r11.wyz min r8.x, r8.x, c102.w mul r11.yzw, r9.xxzw, r1.z add r10.w, c102.w, -r9.y dp3 r7.w, r8.wyz, r8.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r9.y, r6.xyz, r11.wyz rsq r1.x, r7.w min r11.y, r10.w, c102.w mul r8.x, r8.x, r9.x max r11.y, r11.y, c102.x mad r9.y, r9.y, c102.y, c102.y mul r11.xzw, r8.yyzw, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.y, r11.y, r9.y mul r10.xyz, r10.xyz, r8.x mul r9.yzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wxz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov r3.xyz, v1.xyz +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r11, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT0, v2 mad r2, v4.y, c[a0.x], r2 mad r11, v4.y, c[a0.x+1], r11 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z +mov oD0.w, c7.w mul r10.xyz, c14.xyz, r7.xyz mad r2, v4.z, c[a0.x], r2 mad r11, v4.z, c[a0.x+1], r11 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz mov r3.w, c6.w +rsq r1.w, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r8.y, r9.wxz, r9.wxz +rsq r1.w, r8.x add r4.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r4.wyz, r4.wyz mul r10.w, r8.x, r1.w rsq r9.y, r8.z add r2.xzw, c5.yyzx, -r5.yyzx mul r10.w, r10.w, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r2.wxz, r2.wxz min r10.w, r10.w, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.y mul r11.yzw, r11.yyzw, r1.w add r8.z, c6.w, -r10.w min r10.w, r8.y, c6.w mul r8.y, r8.x, r1.z mul r2.xzw, r2.xxzw, r1.y dp3 r11.y, r6.xyz, r11.wyz min r8.x, r8.z, c6.w mul r11.xzw, r9.xxzw, r11.x add r8.z, c6.w, -r10.w min r9.x, r8.y, c6.w add r2.xzw, c4.yyzx, r2.xxzw max r8.x, r8.x, c6.x mad r9.z, r11.y, c6.y, c6.y dp3 r9.w, r6.xyz, r11.wxz min r8.y, r8.z, c6.w mul r11.yzw, r4.yyzw, r9.y add r8.z, c6.w, -r9.x dp3 r7.w, r2.wxz, r2.wxz mul r8.x, r8.x, r9.z max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r9.w, c6.y, c6.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.z, r9.z, c6.y, c6.y mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mul r9.xyw, r2.zxxw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.z mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.wyx mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 90 i = 97 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov r3.xyz, v1.xyz rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r11, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT0, v2 mad r2, v4.y, c[a0.x+96], r2 mad r11, v4.y, c[a0.x+97], r11 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z mov oD0.w, c103.w mul r10.xyz, c110.xyz, r7.xyz mad r2, v4.z, c[a0.x+96], r2 mad r11, v4.z, c[a0.x+97], r11 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz mov r3.w, c102.w rsq r1.w, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r8.y, r9.wxz, r9.wxz rsq r1.w, r8.x add r4.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r4.wyz, r4.wyz mul r10.w, r8.x, r1.w rsq r9.y, r8.z add r2.xzw, c101.yyzx, -r5.yyzx mul r10.w, r10.w, r1.y mul r8.y, r8.y, r11.x dp3 r7.w, r2.wxz, r2.wxz min r10.w, r10.w, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.y mul r11.yzw, r11.yyzw, r1.w add r8.z, c102.w, -r10.w min r10.w, r8.y, c102.w mul r8.y, r8.x, r1.z mul r2.xzw, r2.xxzw, r1.y dp3 r11.y, r6.xyz, r11.wyz min r8.x, r8.z, c102.w mul r11.xzw, r9.xxzw, r11.x add r8.z, c102.w, -r10.w min r9.x, r8.y, c102.w add r2.xzw, c100.yyzx, r2.xxzw max r8.x, r8.x, c102.x mad r9.z, r11.y, c102.y, c102.y dp3 r9.w, r6.xyz, r11.wxz min r8.y, r8.z, c102.w mul r11.yzw, r4.yyzw, r9.y add r8.z, c102.w, -r9.x dp3 r7.w, r2.wxz, r2.wxz mul r8.x, r8.x, r9.z max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r9.w, c102.y, c102.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.z, r9.z, c102.y, c102.y mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mul r9.xyw, r2.zxxw, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.z mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r9.wyx mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w dp4 oT1.x, r3, c116 dp4 oT1.y, r3, c117 dp4 oT1.z, r3, c118 dp4 oT1.w, r3, c119 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(4, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v3.x +rcp r1.y, c10.w mov r3.xyz, v1.xyz +rcp r1.x, c11.w mul r2, v4.x, c[a0.x] mul r11, v4.x, c[a0.x+1] mul r4, v4.x, c[a0.x+2] mov a0.x, v3.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT0, v2 mad r2, v4.y, c[a0.x], r2 mad r11, v4.y, c[a0.x+1], r11 mad r4, v4.y, c[a0.x+2], r4 mov a0.x, v3.z +rcp r1.w, c13.w mul r10.xyz, c14.xyz, r7.xyz mad r2, v4.z, c[a0.x], r2 mad r11, v4.z, c[a0.x+1], r11 mad r4, v4.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +mov oD0.w, c7.w dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz rsq r11.x, r6.w add r9.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.x rsq r11.x, r8.x dp3 r8.y, r9.wyz, r9.wyz add r4.xzw, c12.yyzx, -r5.yyzx rsq r10.w, r8.y dp3 r8.z, r4.wxz, r4.wxz add r2.yzw, c13.yyzx, -r5.yyzx rsq r9.x, r8.z dp3 r8.w, r2.wyz, r2.wyz mul r8.x, r8.x, r11.x rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.w add r0.xzw, c5.yyzx, -r5.yyzx mul r11.xyz, r11.wyz, r11.x dp3 r11.x, r6.xyz, r11.xyz mul r11.yzw, r4.xxzw, r9.x min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r9.x, r8.z, r9.x dp3 r8.z, r0.wxz, r0.wxz add r8.x, c6.w, -r8.x min r8.y, r8.y, c6.w mul r9.x, r9.x, r1.z +rsq r1.x, r8.z mul r8.z, r8.w, r7.w min r8.x, r8.x, c6.w mul r9.yzw, r9.yyzw, r10.w add r8.y, c6.w, -r8.y min r9.x, r9.x, c6.w mul r10.w, r8.z, r1.w mul r4.yzw, r0.xxzw, r1.x max r8.x, r8.x, c6.x mad r11.x, r11.x, c6.y, c6.y dp3 r9.y, r6.xyz, r9.wyz min r8.y, r8.y, c6.w add r8.z, c6.w, -r9.x min r9.x, r10.w, c6.w add r4.yzw, c4.yyzx, r4.yyzw mul r8.x, r8.x, r11.x max r8.y, r8.y, c6.x mad r9.y, r9.y, c6.y, c6.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c6.w mul r11.yzw, r2.yyzw, r7.w add r8.w, c6.w, -r9.x dp3 r7.w, r4.wyz, r4.wyz mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r11.wyz min r8.w, r8.w, c6.w mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mov r3.w, c6.w mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz mul r9.xyz, r4.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 106 i = 113 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v3.x rcp r1.y, c106.w mov r3.xyz, v1.xyz rcp r1.x, c107.w mul r2, v4.x, c[a0.x+96] mul r11, v4.x, c[a0.x+97] mul r4, v4.x, c[a0.x+98] mov a0.x, v3.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT0, v2 mad r2, v4.y, c[a0.x+96], r2 mad r11, v4.y, c[a0.x+97], r11 mad r4, v4.y, c[a0.x+98], r4 mov a0.x, v3.z rcp r1.w, c109.w mul r10.xyz, c110.xyz, r7.xyz mad r2, v4.z, c[a0.x+96], r2 mad r11, v4.z, c[a0.x+97], r11 mad r4, v4.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 mov oD0.w, c103.w dp4 r5.y, v0, r11 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r11.xyz dp3 r6.z, v1.xyz, r4.xyz add r11.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r11.wyz, r11.wyz rsq r11.x, r6.w add r9.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.x rsq r11.x, r8.x dp3 r8.y, r9.wyz, r9.wyz add r4.xzw, c108.yyzx, -r5.yyzx rsq r10.w, r8.y dp3 r8.z, r4.wxz, r4.wxz add r2.yzw, c109.yyzx, -r5.yyzx rsq r9.x, r8.z dp3 r8.w, r2.wyz, r2.wyz mul r8.x, r8.x, r11.x rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.w add r0.xzw, c101.yyzx, -r5.yyzx mul r11.xyz, r11.wyz, r11.x dp3 r11.x, r6.xyz, r11.xyz mul r11.yzw, r4.xxzw, r9.x min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r9.x, r8.z, r9.x dp3 r8.z, r0.wxz, r0.wxz add r8.x, c102.w, -r8.x min r8.y, r8.y, c102.w mul r9.x, r9.x, r1.z rsq r1.x, r8.z mul r8.z, r8.w, r7.w min r8.x, r8.x, c102.w mul r9.yzw, r9.yyzw, r10.w add r8.y, c102.w, -r8.y min r9.x, r9.x, c102.w mul r10.w, r8.z, r1.w mul r4.yzw, r0.xxzw, r1.x max r8.x, r8.x, c102.x mad r11.x, r11.x, c102.y, c102.y dp3 r9.y, r6.xyz, r9.wyz min r8.y, r8.y, c102.w add r8.z, c102.w, -r9.x min r9.x, r10.w, c102.w add r4.yzw, c100.yyzx, r4.yyzw mul r8.x, r8.x, r11.x max r8.y, r8.y, c102.x mad r9.y, r9.y, c102.y, c102.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c102.w mul r11.yzw, r2.yyzw, r7.w add r8.w, c102.w, -r9.x dp3 r7.w, r4.wyz, r4.wyz mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r11.wyz min r8.w, r8.w, c102.w mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mov r3.w, c102.w mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz mul r9.xyz, r4.wyz, r1.x dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp4 oT1.x, r3, c20 dp4 oT1.y, r3, c21 dp4 oT1.z, r3, c22 dp4 oT1.w, r3, c23 ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (96) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov oT0, v2 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mov oT1, v3 mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w mad oPos.xyz, r12, r1.x, c-37 ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 9 i = 10 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov oT0, v2 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w mov oT1, v3 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz +mov oT0, v2 mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r10.yzw, c8.yyzx +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z +mov oT1, v3 mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r11.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r11.xyz, c14.xyz, r10.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 46 i = 48 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mov oT0, v2 mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r10.yzw, c104.yyzx rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mov oT1, v3 mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r11.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.x, r8.x, r9.x mul r11.xyz, c110.xyz, r10.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mul r10.xyz, r11.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w +mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz +mov oT1, v3 mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 61 i = 64 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mov oT1, v3 mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w +mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y +mov oT1, v3 mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 77 i = 80 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mov oT1, v3 mul r8.y, r8.y, r11.x dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r3, r5, c96 add oPos.x, r3, c96.w dp3 r3, r5, c97 add oPos.y, r3, c97.w dp3 r3, r5, c98 add oPos.z, r3, c98.w dp3 r3, r5, c99 add oPos.w, r3, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz +mov oT0, v2 mul r9.x, r8.x, r1.w +mov oT1, v3 rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 93 i = 96 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mov oT0, v2 mul r9.x, r8.x, r1.w mov oT1, v3 rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 21 i = 22 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz +mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mov r0.w, c5.w mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x +rsq r1.z, r6.w dph oPos.x, r5, c0 +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c6.w add r10.yzw, c4.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz +rcc r1.x, r12.w dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 57 i = 60 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov r0.w, c101.w mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x rsq r1.z, r6.w dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c102.w add r10.yzw, c100.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c97 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (52) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mul r11.xyz, c14.xyz, r7.xyz mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dph oPos.x, r5, c0 +rsq r1.z, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c5.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w +rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z +rsq r1.y, r7.w min r9.y, r9.y, c6.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c6.w, -r9.y min r9.y, r11.w, c6.w add r8.xzw, c4.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c6.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.y, r6.xyz, r10.wyz +rsq r1.x, r7.w min r11.w, r10.x, c6.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c6.x mad r9.y, r9.y, c6.y, c6.y mul r10.yzw, r8.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y +rcc r1.x, r12.w mul r9.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r9.wxz, r8.x, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 73 i = 76 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mul r11.xyz, c110.xyz, r7.xyz mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.z, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c101.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z rsq r1.y, r7.w min r9.y, r9.y, c102.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c102.w, -r9.y min r9.y, r11.w, c102.w add r8.xzw, c100.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c102.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.y, r6.xyz, r10.wyz rsq r1.x, r7.w min r11.w, r10.x, c102.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c102.x mad r9.y, r9.y, c102.y, c102.y mul r10.yzw, r8.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y mul r9.xzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c101.w mad r10.xyz, r9.wxz, r8.x, r11.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c15.yyzx, r7.yyzx +rsq r1.w, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dph oPos.x, r5, c0 +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c5.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c6.w mul r11.w, r11.w, r1.x +rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c6.w, -r8.x min r11.w, r11.w, c6.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c6.w, -r11.w min r9.y, r9.y, c6.w add r3.xzw, c4.yyzx, r3.xxzw max r8.x, r8.x, c6.x mad r11.w, r10.y, c6.y, c6.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c6.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c6.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.y, r11.w, c6.y, c6.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c16.yyzx, r7.yyzx +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 89 i = 92 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c111.yyzx, r7.yyzx rsq r1.w, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r0, r5, c96 add oPos.x, r0, c96.w rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c101.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c102.w mul r11.w, r11.w, r1.x rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c102.w, -r8.x min r11.w, r11.w, c102.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c102.w, -r11.w min r9.y, r9.y, c102.w add r3.xzw, c100.yyzx, r3.xxzw max r8.x, r8.x, c102.x mad r11.w, r10.y, c102.y, c102.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c102.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c102.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.y, r11.w, c102.y, c102.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c112.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z +rcp r1.w, c13.w mul r11.xyz, c14.xyz, r7.xyz mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +mov oD0.w, c7.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c13.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c5.yyzx, -r5.yyzx min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c6.w, -r8.x min r11.w, r8.y, c6.w +rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c6.w, -r11.w min r9.x, r8.y, c6.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c6.x mad r9.w, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c6.w mul r10.xyz, r4.wyz, r9.y add r8.z, c6.w, -r9.x min r9.y, r9.z, c6.w add r4.xzw, c4.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c6.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c6.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c6.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 105 i = 108 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z rcp r1.w, c109.w mul r11.xyz, c110.xyz, r7.xyz mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 mov oD0.w, c103.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c109.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c101.yyzx, -r5.yyzx min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c102.w, -r8.x min r11.w, r8.y, c102.w rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c102.w, -r11.w min r9.x, r8.y, c102.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c102.x mad r9.w, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c102.w mul r10.xyz, r4.wyz, r9.y add r8.z, c102.w, -r9.x min r9.y, r9.z, c102.w add r4.xzw, c100.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c102.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c102.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c102.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c113.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov oT0, v2 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz mov oT1, v3 +rcc r1.x, r12.w mov oT2, v3 mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 8 i = 11 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov oT0, v2 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w mov oT1, v3 mov oT2, v3 ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w dp3 r7.w, r11.wyz, r11.wyz +mov oT0, v2 mul r11.x, r8.x, r1.x +rsq r1.z, r6.w mov r10.yzw, c8.yyzx +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z +mov oT1, v3 mul r9.y, r11.x, r1.y +mov oT2, v3 mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r11.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r11.xyz, c14.xyz, r10.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 47 i = 49 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w dp3 r7.w, r11.wyz, r11.wyz mov oT0, v2 mul r11.x, r8.x, r1.x rsq r1.z, r6.w mov r10.yzw, c104.yyzx rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mov oT1, v3 mul r9.y, r11.x, r1.y mov oT2, v3 mul r11.yzw, r11.yyzw, r1.w min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r11.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.x, r8.x, r9.x mul r11.xyz, c110.xyz, r10.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mul r10.xyz, r11.xyz, r8.x lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w +rsq r1.z, r8.y mul r11.x, r8.x, r1.w +mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz +mov oT1, v3 mul r9.x, r11.x, r1.y +mov oT2, v3 mul r11.x, r8.y, r1.z +rsq r1.y, r7.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r9.yzw, c4.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r10.wxz, r1.z add r8.y, c6.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r10.xyz, c14.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x +rcc r1.x, r12.w mul r11.xyz, c15.xyz, r11.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.y, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 62 i = 65 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r1.w rsq r1.z, r8.y mul r11.x, r8.x, r1.w mov oT0, v2 dp3 r7.w, r9.wyz, r9.wyz mov oT1, v3 mul r9.x, r11.x, r1.y mov oT2, v3 mul r11.x, r8.y, r1.z rsq r1.y, r7.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r9.yzw, r9.yyzw, r1.y add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r9.yzw, c100.yyzx, r9.yyzw dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r10.wxz, r1.z add r8.y, c102.w, -r9.x dp3 r7.w, r9.wyz, r9.wyz max r8.x, r8.x, c102.x mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.x, r8.x, r9.x max r8.y, r8.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r10.xyz, c110.xyz, r11.wyz mul r7.xyz, r9.wyz, r1.x dp3 r4, r5, c96 add oPos.x, r4, c96.w dp3 r4, r5, c97 add oPos.y, r4, c97.w dp3 r4, r5, c98 add oPos.z, r4, c98.w dp3 r4, r5, c99 add oPos.w, r4, c99.w mul r8.y, r8.y, r9.x mul r10.xyz, r10.xyz, r8.x mul r11.xyz, c111.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.y, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w +mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c5.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y +mov oT1, v3 mul r8.y, r8.y, r11.x +mov oT2, v3 dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x +rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r10.wxz, r11.x add r8.w, c6.w, -r10.y min r11.x, r8.y, c6.w add r10.yzw, c4.yyzx, r4.xxzw max r8.y, r8.z, c6.x mad r10.x, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r9.wyz, r9.x add r8.w, c6.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c15.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c16.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 78 i = 81 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w mul r10.y, r8.x, r1.w mov oT0, v2 rsq r9.x, r8.z add r4.xzw, c101.yyzx, -r5.yyzx mul r10.y, r10.y, r1.y mov oT1, v3 mul r8.y, r8.y, r11.x mov oT2, v3 dp3 r7.w, r4.wxz, r4.wxz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x rsq r1.y, r7.w mul r8.x, r8.z, r9.x mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mul r4.xzw, r4.xxzw, r1.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r10.wxz, r11.x add r8.w, c102.w, -r10.y min r11.x, r8.y, c102.w add r10.yzw, c100.yyzx, r4.xxzw max r8.y, r8.z, c102.x mad r10.x, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r9.wyz, r9.x add r8.w, c102.w, -r11.x dp3 r7.w, r10.wyz, r10.wyz mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r11.wwzy mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.xwwz, r8.y mul r7.yzw, c111.yyzx, r11.yyzw mul r10.xyz, r10.wyz, r1.x dp3 r3, r5, c96 add oPos.x, r3, c96.w dp3 r3, r5, c97 add oPos.y, r3, c97.w dp3 r3, r5, c98 add oPos.z, r3, c98.w dp3 r3, r5, c99 add oPos.w, r3, c99.w mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yywx mul r11.xyz, c112.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.x, r9.wxz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r11.yzw, c8.yyzx +rsq r1.z, r6.w add r10.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz +rcp r1.z, c12.w add r9.yzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz +mov oD0.w, c7.w add r4.xzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz +mov oT0, v2 mul r9.x, r8.x, r1.w +mov oT1, v3 rsq r8.x, r8.w mul r9.x, r9.x, r1.y +mov oT2, v3 mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r3.yzw, c5.yyzx, -r5.yyzx min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c6.w, -r9.x min r8.y, r8.y, c6.w +rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c6.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c6.w, -r8.y min r11.x, r8.z, c6.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c6.x mad r9.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c6.w mul r7.xyz, r9.wyz, r10.y add r8.w, c6.w, -r11.x min r9.y, r10.x, c6.w add r10.xyw, c4.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c6.x mad r9.x, r10.z, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c6.w mul r7.xyz, r4.wxz, r8.x add r8.x, c6.w, -r9.y mul r4.yzw, c14.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c15.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c6.x mad r9.w, r9.w, c6.y, c6.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c16.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c17.xyz, r11.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r9.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 94 i = 97 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r11.yzw, c104.yyzx rsq r1.z, r6.w add r10.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r10.wxz, r10.wxz rcp r1.z, c108.w add r9.yzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r9.wyz, r9.wyz mov oD0.w, c103.w add r4.xzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r4.wxz, r4.wxz mov oT0, v2 mul r9.x, r8.x, r1.w mov oT1, v3 rsq r8.x, r8.w mul r9.x, r9.x, r1.y mov oT2, v3 mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r3.yzw, c101.yyzx, -r5.yyzx min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y dp3 r7.w, r3.wyz, r3.wyz mul r7.xyz, r7.xyz, r1.w add r9.x, c102.w, -r9.x min r8.y, r8.y, c102.w rsq r1.x, r7.w mul r8.z, r8.z, r1.z mul r8.w, r8.w, r8.x dp3 r7.x, r6.xyz, r7.xyz min r9.x, r9.x, c102.w mul r7.yzw, r10.xxzw, r11.x add r8.y, c102.w, -r8.y min r11.x, r8.z, c102.w mul r10.x, r8.w, r1.y mul r3.yzw, r3.yyzw, r1.x max r8.z, r9.x, c102.x mad r9.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.y, r8.y, c102.w mul r7.xyz, r9.wyz, r10.y add r8.w, c102.w, -r11.x min r9.y, r10.x, c102.w add r10.xyw, c100.yzzx, r3.yzzw mul r8.z, r8.z, r9.x max r8.y, r8.y, c102.x mad r9.x, r10.z, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.w, r8.w, c102.w mul r7.xyz, r4.wxz, r8.x add r8.x, c102.w, -r9.y mul r4.yzw, c110.yyzx, r11.yyzw dp3 r7.w, r10.wxy, r10.wxy mul r8.y, r8.y, r9.x max r8.w, r8.w, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r4.wyz, r8.z mul r4.yzw, c111.yyzx, r11.yyzw mul r8.z, r8.w, r9.z max r8.w, r8.x, c102.x mad r9.w, r9.w, c102.y, c102.y mad r9.xyz, r4.wyz, r8.y, r7.xyz mul r7.xyz, c112.xyz, r11.wyz mul r10.xzw, r10.xxyw, r1.x dp3 r2, r5, c96 add oPos.x, r2, c96.w dp3 r2, r5, c97 add oPos.y, r2, c97.w dp3 r2, r5, c98 add oPos.z, r2, c98.w dp3 r2, r5, c99 add oPos.w, r2, c99.w mul r8.w, r8.w, r9.w mad r9.xyz, r7.xyz, r8.z, r9.xyz mul r11.xyz, c113.xyz, r11.wyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wxz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r9.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mov oT2, v3 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz rcc r11.x, r12.w mad oPos.xyz, r12.xyz, r11.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 22 i = 23 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov oT2, v3 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11, r5, c96 add oPos.x, r11, c96.w dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz +mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mov r0.w, c5.w +mov oT2, v3 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x +rsq r1.z, r6.w dph oPos.x, r5, c0 +rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c6.w add r10.yzw, c4.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r9.x, r9.x, c6.y, c6.y max r8.x, r8.x, c6.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz +rcc r1.x, r12.w dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 58 i = 61 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov r0.w, c101.w mov oT2, v3 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r7.w, r10.wyz, r10.wyz mul r11.w, r8.x, r1.x rsq r1.z, r6.w dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.w, r7.w mul r6.xyz, r6.xyz, r1.z mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.w min r9.y, r9.y, c102.w add r10.yzw, c100.yyzx, r10.yyzw mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz dp3 r9.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r9.x, r9.x, c102.y, c102.y max r8.x, r8.x, c102.x mul r7.xyz, r10.wyz, r1.x dph oPos.y, r5, c97 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (53) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mul r11.xyz, c14.xyz, r7.xyz +mov oT2, v3 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dph oPos.x, r5, c0 +rsq r1.z, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c5.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w +rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z +rsq r1.y, r7.w min r9.y, r9.y, c6.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c6.w, -r9.y min r9.y, r11.w, c6.w add r8.xzw, c4.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c6.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c6.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.y, r6.xyz, r10.wyz +rsq r1.x, r7.w min r11.w, r10.x, c6.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c6.x mad r9.y, r9.y, c6.y, c6.y mul r10.yzw, r8.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y +rcc r1.x, r12.w mul r9.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r9.wxz, r8.x, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 74 i = 77 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mul r11.xyz, c110.xyz, r7.xyz mov oT2, v3 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz dp3 r9, r5, c96 add oPos.x, r9, c96.w rsq r1.z, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c101.yyzx, -r5.yyzx mul r10.yzw, r10.yyzw, r1.w rsq r1.z, r8.y mul r11.w, r8.x, r1.w dp3 r7.w, r4.wyz, r4.wyz mul r9.y, r11.w, r1.y mul r11.w, r8.y, r1.z rsq r1.y, r7.w min r9.y, r9.y, c102.w mul r11.w, r11.w, r1.x mul r8.xzw, r4.yyzw, r1.y add r8.y, c102.w, -r9.y min r9.y, r11.w, c102.w add r8.xzw, c100.yyzx, r8.xxzw dp3 r11.w, r6.xyz, r10.wyz min r8.y, r8.y, c102.w mul r10.yzw, r9.xxzw, r1.z add r10.x, c102.w, -r9.y dp3 r7.w, r8.wxz, r8.wxz max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.y, r6.xyz, r10.wyz rsq r1.x, r7.w min r11.w, r10.x, c102.w mul r8.y, r8.y, r9.x max r11.w, r11.w, c102.x mad r9.y, r9.y, c102.y, c102.y mul r10.yzw, r8.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.x, r11.w, r9.y mul r11.xyz, r11.xyz, r8.y mul r9.xzw, c111.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c101.w mad r10.xyz, r9.wxz, r8.x, r11.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz +mov oT2, v3 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c15.yyzx, r7.yyzx +rsq r1.w, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dph oPos.x, r5, c0 +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c5.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c6.w mul r11.w, r11.w, r1.x +rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c6.w, -r8.x min r11.w, r11.w, c6.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c6.w, -r11.w min r9.y, r9.y, c6.w add r3.xzw, c4.yyzx, r3.xxzw max r8.x, r8.x, c6.x mad r11.w, r10.y, c6.y, c6.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c6.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c6.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c6.x +rsq r1.x, r7.w mad r9.y, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c6.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c6.x mad r9.y, r11.w, c6.y, c6.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c16.yyzx, r7.yyzx +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.z, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 90 i = 93 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mov oT2, v3 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c111.yyzx, r7.yyzx rsq r1.w, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.w dp3 r0, r5, c96 add oPos.x, r0, c96.w rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r11.w dp3 r9.y, r4.wyz, r4.wyz mul r8.x, r8.x, r1.w rsq r7.w, r9.y add r3.xzw, c101.yyzx, -r5.yyzx mul r8.x, r8.x, r1.y mul r11.w, r11.w, r10.x dp3 r6.w, r3.wxz, r3.wxz min r8.x, r8.x, c102.w mul r11.w, r11.w, r1.x rsq r1.y, r6.w mul r9.y, r9.y, r7.w mul r10.yzw, r10.yyzw, r1.w add r8.x, c102.w, -r8.x min r11.w, r11.w, c102.w mul r9.y, r9.y, r1.z mul r3.xzw, r3.xxzw, r1.y dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r8.wwzy, r10.x add r8.y, c102.w, -r11.w min r9.y, r9.y, c102.w add r3.xzw, c100.yyzx, r3.xxzw max r8.x, r8.x, c102.x mad r11.w, r10.y, c102.y, c102.y dp3 r10.y, r6.xyz, r10.xwz min r8.y, r8.y, c102.w mul r10.xzw, r4.yyzw, r7.w add r8.z, c102.w, -r9.y dp3 r7.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w max r8.y, r8.y, c102.x rsq r1.x, r7.w mad r9.y, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.wxz min r8.z, r8.z, c102.w mul r8.y, r8.y, r9.y max r8.z, r8.z, c102.x mad r9.y, r11.w, c102.y, c102.y mul r10.xyz, r11.xyz, r8.x mul r11.yzw, r3.xxzw, r1.x dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.z, r8.z, r9.y mad r10.xyz, r9.wxz, r8.y, r10.xyz mul r9.yzw, c112.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c101.w mad r10.xyz, r9.wyz, r8.z, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +rcp r1.z, c12.w mov r7.xyz, c8.xyz +mov oT1, v3 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z +rcp r1.w, c13.w mul r11.xyz, c14.xyz, r7.xyz +mov oT2, v3 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 +mov oD0.w, c7.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c13.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c5.yyzx, -r5.yyzx min r8.x, r8.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c6.w, -r8.x min r11.w, r8.y, c6.w +rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c6.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c6.w, -r11.w min r9.x, r8.y, c6.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c6.x mad r9.w, r10.y, c6.y, c6.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c6.w mul r10.xyz, r4.wyz, r9.y add r8.z, c6.w, -r9.x min r9.y, r9.z, c6.w add r4.xzw, c4.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c6.x mad r9.x, r11.w, c6.y, c6.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c6.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c6.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x +rsq r1.x, r7.w mad r9.z, r9.z, c6.y, c6.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c6.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c15.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c6.x mad r9.w, r9.w, c6.y, c6.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c16.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c17.xyz, r7.xyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 106 i = 109 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y rcp r1.z, c108.w mov r7.xyz, c104.xyz mov oT1, v3 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z rcp r1.w, c109.w mul r11.xyz, c110.xyz, r7.xyz mov oT2, v3 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 mov oD0.w, c103.w dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz rsq r11.w, r6.w add r9.xzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.w rsq r11.w, r8.x dp3 r8.y, r9.wxz, r9.wxz add r4.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r4.wyz, r4.wyz add r3.xzw, c109.yyzx, -r5.yyzx rsq r9.y, r8.z dp3 r8.w, r3.wxz, r3.wxz mul r8.x, r8.x, r11.w rsq r7.w, r8.w mul r8.x, r8.x, r1.y mul r8.y, r8.y, r10.x add r2.yzw, c101.yyzx, -r5.yyzx min r8.x, r8.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r9.y dp3 r6.w, r2.wyz, r2.wyz mul r10.yzw, r10.yyzw, r11.w add r8.x, c102.w, -r8.x min r11.w, r8.y, c102.w rsq r1.x, r6.w mul r8.y, r8.z, r1.z mul r8.z, r8.w, r7.w dp3 r10.y, r6.xyz, r10.wyz min r8.x, r8.x, c102.w mul r10.xzw, r9.wwzx, r10.x add r8.w, c102.w, -r11.w min r9.x, r8.y, c102.w mul r9.z, r8.z, r1.w mul r2.yzw, r2.yyzw, r1.x max r8.x, r8.x, c102.x mad r9.w, r10.y, c102.y, c102.y dp3 r11.w, r6.xyz, r10.xwz min r8.y, r8.w, c102.w mul r10.xyz, r4.wyz, r9.y add r8.z, c102.w, -r9.x min r9.y, r9.z, c102.w add r4.xzw, c100.yyzx, r2.yyzw mul r8.x, r8.x, r9.w max r8.y, r8.y, c102.x mad r9.x, r11.w, c102.y, c102.y dp3 r9.z, r6.xyz, r10.xyz min r8.z, r8.z, c102.w mul r10.yzw, r3.xxzw, r7.w add r8.w, c102.w, -r9.y dp3 r7.w, r4.wxz, r4.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c102.x rsq r1.x, r7.w mad r9.z, r9.z, c102.y, c102.y dp3 r9.w, r6.xyz, r10.wyz min r8.w, r8.w, c102.w mul r10.xyz, r11.xyz, r8.x mul r11.xyz, c111.xyz, r7.xyz mul r8.z, r8.z, r9.z max r8.w, r8.w, c102.x mad r9.w, r9.w, c102.y, c102.y mad r10.xyz, r11.xyz, r8.y, r10.xyz mul r11.xyz, c112.xyz, r7.xyz mul r9.xyz, r4.wxz, r1.x dp3 r0, r5, c96 add oPos.x, r0, c96.w dp3 r0, r5, c97 add oPos.y, r0, c97.w dp3 r0, r5, c98 add oPos.z, r0, c98.w dp3 r0, r5, c99 add oPos.w, r0, c99.w mul r8.w, r8.w, r9.w mad r10.xyz, r11.xyz, r8.z, r10.xyz mul r11.xyz, c113.xyz, r7.xyz dp3 r0.x, r6.xyz, c100.xyz dp3 r0.y, r6.xyz, r9.xyz mov r0.w, c101.w mad r10.xyz, r11.xyz, r8.w, r10.xyz lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c103.xyz mul oD1.w, r1.z, c105.w ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_FLOAT3), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 mov r2.xyz, c32.xyz +mov oT0, v2 add r0.xyz, c5.xyz, -r5.xyz mov r3.xyz, c33.xyz +mov oT1, v2 mul r6.xyz, c4.x, r2.xyz dp3 r0.w, r0.xyz, r0.xyz mov r4.xyz, c34.xyz mad r6.xyz, c4.y, r3.xyz, r6.xyz dph oPos.x, r5, c0 +rsq r1.x, r0.w mad r6.xyz, c4.z, r4.xyz, r6.xyz mul r0.xyz, r0.xyz, r1.x mul r7.xyz, r0.x, c32.xyz mad r7.xyz, r0.y, c33.xyz, r7.xyz mad r7.xyz, r0.z, c34.xyz, r7.xyz add r7.xyz, r6.xyz, r7.xyz dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz dp3 oT2.x, r6.xyz, v4.xyz +rcc r1.x, r12.w dp3 oT2.y, r6.xyz, v5.xyz dp3 oT2.z, r6.xyz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 23 i = 30 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 mov r2.xyz, c128.xyz mov oT0, v2 add r0.xyz, c101.xyz, -r5.xyz mov r3.xyz, c129.xyz mov oT1, v2 mul r6.xyz, c100.x, r2.xyz dp3 r0.w, r0.xyz, r0.xyz mov r4.xyz, c130.xyz mad r6.xyz, c100.y, r3.xyz, r6.xyz dp3 r11, r5, c96 add oPos.x, r11, c96.w rsq r1.x, r0.w mad r6.xyz, c100.z, r4.xyz, r6.xyz mul r0.xyz, r0.xyz, r1.x mul r7.xyz, r0.x, c128.xyz mad r7.xyz, r0.y, c129.xyz, r7.xyz mad r7.xyz, r0.z, c130.xyz, r7.xyz add r7.xyz, r6.xyz, r7.xyz dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w dp3 oT2.x, r6.xyz, v4.xyz dp3 oT2.y, r6.xyz, v5.xyz dp3 oT2.z, r6.xyz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_FLOAT3), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, c32.xyz dp3 r8.x, r7.xyz, r7.xyz +rcp r1.y, c10.w dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz +rsq r1.x, r8.x add r11.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz +mov oD0.w, c7.w mov r2.xyz, c32.xyz +mov oT0, v2 dp3 r7.w, r11.wyz, r11.wyz +rsq r1.z, r6.w add r0.xyz, c5.xyz, -r5.xyz mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r7.w mov r3.xyz, c33.xyz +mov oT1, v2 mul r10.xzw, c4.x, r2.yyzx dp3 r0.w, r0.xyz, r0.xyz mul r11.x, r8.x, r1.x mov r4.xyz, c34.xyz +rsq r1.z, r0.w mad r10.yzw, c4.y, r3.yyzx, r10.xxzw mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w mad r10.xzw, c4.z, r4.yyzx, r10.yyzw mul r0.xyz, r0.xyz, r1.z min r9.y, r9.y, c6.w add r11.yzw, c4.yyzx, r11.yyzw mul r9.xzw, r0.x, c32.yyzx mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz mad r9.xyz, r0.y, c33.xyz, r9.wxz dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r7.xyz, r0.z, c34.xyz, r9.xyz max r8.x, r8.x, c6.x mad r9.x, r9.w, c6.y, c6.y mov r9.yzw, c8.yyzx mul r11.yzw, r11.yyzw, r1.x add r7.xyz, r10.wxz, r7.xyz dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r9.xyz, c14.xyz, r9.wyz +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mul r11.xyz, r9.xyz, r8.x +lit r1.z, r0.xyyw mul oPos.xyz, r12.xyz, c-38.xyz add oD0.xyz, r11.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r10.wxz, v4.xyz dp3 oT2.y, r10.wxz, v5.xyz dp3 oT2.z, r10.wxz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 60 i = 68 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, c128.xyz dp3 r8.x, r7.xyz, r7.xyz rcp r1.y, c106.w dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz rsq r1.x, r8.x add r11.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz mov oD0.w, c103.w mov r2.xyz, c128.xyz mov oT0, v2 dp3 r7.w, r11.wyz, r11.wyz rsq r1.z, r6.w add r0.xyz, c101.xyz, -r5.xyz mul r6.xyz, r6.xyz, r1.z rsq r1.w, r7.w mov r3.xyz, c129.xyz mov oT1, v2 mul r10.xzw, c100.x, r2.yyzx dp3 r0.w, r0.xyz, r0.xyz mul r11.x, r8.x, r1.x mov r4.xyz, c130.xyz rsq r1.z, r0.w mad r10.yzw, c100.y, r3.yyzx, r10.xxzw mul r9.y, r11.x, r1.y mul r11.yzw, r11.yyzw, r1.w mad r10.xzw, c100.z, r4.yyzx, r10.yyzw mul r0.xyz, r0.xyz, r1.z min r9.y, r9.y, c102.w add r11.yzw, c100.yyzx, r11.yyzw mul r9.xzw, r0.x, c128.yyzx mul r7.xyz, r7.xyz, r1.x add r8.x, c102.w, -r9.y dp3 r7.w, r11.wyz, r11.wyz mad r9.xyz, r0.y, c129.xyz, r9.wxz dp3 r9.w, r6.xyz, r7.xyz min r8.x, r8.x, c102.w rsq r1.x, r7.w mad r7.xyz, r0.z, c130.xyz, r9.xyz max r8.x, r8.x, c102.x mad r9.x, r9.w, c102.y, c102.y mov r9.yzw, c104.yyzx mul r11.yzw, r11.yyzw, r1.x add r7.xyz, r10.wxz, r7.xyz dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.x mul r9.xyz, c14.xyz, r9.wyz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.wyz mov r0.w, c5.w mul r11.xyz, r9.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r11.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r10.wxz, v4.xyz dp3 oT2.y, r10.wxz, v5.xyz dp3 oT2.z, r10.wxz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (50) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_FLOAT3), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r2.xyz, c32.xyz +rsq r1.z, r6.w add r11.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz +mov oD0.w, c7.w add r10.xzw, c5.yyzx, -r5.yyzx mov r3.xyz, c33.xyz +rsq r1.z, r8.y add r0.xyz, c5.xyz, -r5.xyz mul r11.x, r8.x, r1.w +mov oT0, v2 dp3 r7.w, r10.wxz, r10.wxz +mov oT1, v2 mul r9.yzw, c4.x, r2.yyzx dp3 r0.w, r0.xyz, r0.xyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z +rsq r1.y, r7.w mov r4.xyz, c34.xyz mad r9.yzw, c4.y, r3.yyzx, r9.yyzw rsq r10.y, r0.w min r9.x, r9.x, c6.w mul r11.x, r11.x, r1.x mul r10.xzw, r10.xxzw, r1.y mad r9.yzw, c4.z, r4.yyzx, r9.yyzw mul r0.xyz, r0.xyz, r10.y mul r7.xyz, r7.xyz, r1.w add r8.x, c6.w, -r9.x min r9.x, r11.x, c6.w add r10.xzw, c4.yyzx, r10.xxzw mul r8.yzw, r0.x, c32.yyzx dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c6.w mul r7.xyz, r11.wyz, r1.z add r11.y, c6.w, -r9.x mov r4.xzw, c8.yyzx dp3 r7.w, r10.wxz, r10.wxz mad r8.yzw, r0.y, c33.yyzx, r8.yyzw max r8.x, r8.x, c6.x +rsq r1.x, r7.w mad r9.x, r11.x, c6.y, c6.y dp3 r11.x, r6.xyz, r7.xyz min r11.y, r11.y, c6.w mad r7.xyz, r0.z, c34.xyz, r8.wyz mul r8.x, r8.x, r9.x max r8.y, r11.y, c6.x mad r9.x, r11.x, c6.y, c6.y mul r11.xyz, c14.xyz, r4.wxz mul r10.yzw, r10.xxzw, r1.x add r7.xyz, r9.wyz, r7.xyz dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r11.xyz, r11.xyz, r8.x +rcc r1.x, r12.w mul r8.xzw, c15.yyzx, r4.xxzw dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r8.wxz, r8.y, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r9.wyz, v4.xyz dp3 oT2.y, r9.wyz, v5.xyz dp3 oT2.z, r9.wyz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 75 i = 84 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r2.xyz, c128.xyz rsq r1.z, r6.w add r11.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz mov oD0.w, c103.w add r10.xzw, c101.yyzx, -r5.yyzx mov r3.xyz, c129.xyz rsq r1.z, r8.y add r0.xyz, c101.xyz, -r5.xyz mul r11.x, r8.x, r1.w mov oT0, v2 dp3 r7.w, r10.wxz, r10.wxz mov oT1, v2 mul r9.yzw, c100.x, r2.yyzx dp3 r0.w, r0.xyz, r0.xyz mul r9.x, r11.x, r1.y mul r11.x, r8.y, r1.z rsq r1.y, r7.w mov r4.xyz, c130.xyz mad r9.yzw, c100.y, r3.yyzx, r9.yyzw rsq r10.y, r0.w min r9.x, r9.x, c102.w mul r11.x, r11.x, r1.x mul r10.xzw, r10.xxzw, r1.y mad r9.yzw, c100.z, r4.yyzx, r9.yyzw mul r0.xyz, r0.xyz, r10.y mul r7.xyz, r7.xyz, r1.w add r8.x, c102.w, -r9.x min r9.x, r11.x, c102.w add r10.xzw, c100.yyzx, r10.xxzw mul r8.yzw, r0.x, c128.yyzx dp3 r11.x, r6.xyz, r7.xyz min r8.x, r8.x, c102.w mul r7.xyz, r11.wyz, r1.z add r11.y, c102.w, -r9.x mov r4.xzw, c104.yyzx dp3 r7.w, r10.wxz, r10.wxz mad r8.yzw, r0.y, c129.yyzx, r8.yyzw max r8.x, r8.x, c102.x rsq r1.x, r7.w mad r9.x, r11.x, c102.y, c102.y dp3 r11.x, r6.xyz, r7.xyz min r11.y, r11.y, c102.w mad r7.xyz, r0.z, c130.xyz, r8.wyz mul r8.x, r8.x, r9.x max r8.y, r11.y, c102.x mad r9.x, r11.x, c102.y, c102.y mul r11.xyz, c110.xyz, r4.wxz mul r10.yzw, r10.xxzw, r1.x add r7.xyz, r9.wyz, r7.xyz dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.y, r8.y, r9.x mul r11.xyz, r11.xyz, r8.x mul r8.xzw, c15.yyzx, r4.xxzw dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r8.wxz, r8.y, r11.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r9.wyz, v4.xyz dp3 oT2.y, r9.wyz, v5.xyz dp3 oT2.z, r9.wyz, v6.xyz dp3 oT3.x, r7.xyz, v4.xyz dp3 oT3.y, r7.xyz, v5.xyz dp3 oT3.z, r7.xyz, v6.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (65) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_FLOAT3), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r2.xyz, c32.xyz +rsq r1.z, r6.w add r11.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz +rcp r1.z, c12.w add r10.xzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r10.wxz, r10.wxz +mov oD0.w, c7.w mul r10.y, r8.x, r1.w +mov oT0, v2 rsq r9.x, r8.z add r9.yzw, c5.yyzx, -r5.yyzx add r0.xyz, c5.xyz, -r5.xyz mul r10.y, r10.y, r1.y +mov oT1, v2 mul r8.y, r8.y, r11.x dp3 r7.w, r9.wyz, r9.wyz mov r3.xyz, c33.xyz mul r4.xzw, c4.x, r2.yyzx +rsq r1.y, r7.w dp3 r0.w, r0.xyz, r0.xyz min r10.y, r10.y, c6.w mul r8.y, r8.y, r1.x mul r8.x, r8.z, r9.x +rsq r1.x, r0.w mov r2.yzw, c34.yyzx mad r4.yzw, c4.y, r3.yyzx, r4.xxzw mul r7.xyz, r7.xyz, r1.w add r8.z, c6.w, -r10.y min r10.y, r8.y, c6.w mul r8.y, r8.x, r1.z mov r3.xzw, c8.yyzx mad r4.xzw, c4.z, r2.yyzw, r4.yyzw mul r9.yzw, r9.yyzw, r1.y mul r0.xyz, r0.xyz, r1.x dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c6.w mul r7.xyz, r11.wyz, r11.x add r8.w, c6.w, -r10.y min r11.y, r8.y, c6.w add r11.xzw, c4.yyzx, r9.yyzw mul r9.yzw, r0.x, c32.yyzx max r8.y, r8.z, c6.x mad r10.y, r8.x, c6.y, c6.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c6.w mul r7.xyz, r10.wxz, r9.x add r8.w, c6.w, -r11.y dp3 r7.w, r11.wxz, r11.wxz mad r10.xzw, r0.y, c33.xxzy, r9.wwzy mul r8.y, r8.y, r10.y +rsq r1.x, r7.w max r8.z, r8.z, c6.x mad r9.y, r8.x, c6.y, c6.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c6.w mul r7.xzw, c14.xxzy, r3.wwzx mad r10.xyz, r0.z, c34.xyz, r10.xwz mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r9.xyw, r7.zwwx, r8.y mul r7.yzw, c15.yyzx, r3.xxzw mul r11.xyz, r11.wxz, r1.x add r10.yzw, r4.xxzw, r10.yyzx dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yyxw mul r8.yzw, c16.yyzx, r3.xxzw +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.xyz mov r0.w, c5.w mad r11.xyz, r8.wyz, r8.x, r9.wxz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r11.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r4.wxz, v4.xyz dp3 oT2.y, r4.wxz, v5.xyz dp3 oT2.z, r4.wxz, v6.xyz dp3 oT3.x, r10.wyz, v4.xyz dp3 oT3.y, r10.wyz, v5.xyz dp3 oT3.z, r10.wyz, v6.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 91 i = 100 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r2.xyz, c128.xyz rsq r1.z, r6.w add r11.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz rcp r1.z, c108.w add r10.xzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r10.wxz, r10.wxz mov oD0.w, c103.w mul r10.y, r8.x, r1.w mov oT0, v2 rsq r9.x, r8.z add r9.yzw, c101.yyzx, -r5.yyzx add r0.xyz, c101.xyz, -r5.xyz mul r10.y, r10.y, r1.y mov oT1, v2 mul r8.y, r8.y, r11.x dp3 r7.w, r9.wyz, r9.wyz mov r3.xyz, c129.xyz mul r4.xzw, c100.x, r2.yyzx rsq r1.y, r7.w dp3 r0.w, r0.xyz, r0.xyz min r10.y, r10.y, c102.w mul r8.y, r8.y, r1.x mul r8.x, r8.z, r9.x rsq r1.x, r0.w mov r2.yzw, c130.yyzx mad r4.yzw, c100.y, r3.yyzx, r4.xxzw mul r7.xyz, r7.xyz, r1.w add r8.z, c102.w, -r10.y min r10.y, r8.y, c102.w mul r8.y, r8.x, r1.z mov r3.xzw, c104.yyzx mad r4.xzw, c100.z, r2.yyzw, r4.yyzw mul r9.yzw, r9.yyzw, r1.y mul r0.xyz, r0.xyz, r1.x dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.z, c102.w mul r7.xyz, r11.wyz, r11.x add r8.w, c102.w, -r10.y min r11.y, r8.y, c102.w add r11.xzw, c100.yyzx, r9.yyzw mul r9.yzw, r0.x, c128.yyzx max r8.y, r8.z, c102.x mad r10.y, r8.x, c102.y, c102.y dp3 r8.x, r6.xyz, r7.xyz min r8.z, r8.w, c102.w mul r7.xyz, r10.wxz, r9.x add r8.w, c102.w, -r11.y dp3 r7.w, r11.wxz, r11.wxz mad r10.xzw, r0.y, c129.xxzy, r9.wwzy mul r8.y, r8.y, r10.y rsq r1.x, r7.w max r8.z, r8.z, c102.x mad r9.y, r8.x, c102.y, c102.y dp3 r9.z, r6.xyz, r7.xyz min r8.x, r8.w, c102.w mul r7.xzw, c110.xxzy, r3.wwzx mad r10.xyz, r0.z, c130.xyz, r10.xwz mul r8.z, r8.z, r9.y max r8.x, r8.x, c102.x mad r9.z, r9.z, c102.y, c102.y mul r9.xyw, r7.zwwx, r8.y mul r7.yzw, c111.yyzx, r3.xxzw mul r11.xyz, r11.wxz, r1.x add r10.yzw, r4.xxzw, r10.yyzx dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.x, r8.x, r9.z mad r9.xzw, r7.yyzw, r8.z, r9.yyxw mul r8.yzw, c16.yyzx, r3.xxzw dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r11.xyz mov r0.w, c5.w mad r11.xyz, r8.wyz, r8.x, r9.wxz +lit r1.z, r0.xyyw add oD0.xyz, r11.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r4.wxz, v4.xyz dp3 oT2.y, r4.wxz, v5.xyz dp3 oT2.z, r4.wxz, v6.xyz dp3 oT3.x, r10.wyz, v4.xyz dp3 oT3.y, r10.wyz, v5.xyz dp3 oT3.z, r10.wyz, v6.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (81) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_FLOAT3), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp3 r6.x, v1.xyz, c32.xyz dp3 r6.y, v1.xyz, c33.xyz dp3 r6.z, v1.xyz, c34.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz +rcp r1.y, c10.w dp3 r8.x, r7.xyz, r7.xyz +rcp r1.x, c11.w mov r2.xyz, c32.xyz +rsq r1.z, r6.w add r11.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz +rcp r1.z, c12.w add r10.xzw, c12.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r10.wxz, r10.wxz +mov oD0.w, c7.w add r9.yzw, c13.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r9.wyz, r9.wyz +mov oT0, v2 mul r9.x, r8.x, r1.w +mov oT1, v2 rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x +rcp r1.y, c13.w add r4.yzw, c5.yyzx, -r5.yyzx add r0.xyz, c5.xyz, -r5.xyz min r9.x, r9.x, c6.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y mov r3.xzw, c8.yyzx mul r2.yzw, c4.x, r2.yyzx mul r7.xyz, r7.xyz, r1.w dp3 r7.x, r6.xyz, r7.xyz mul r7.yzw, r11.yyzw, r11.x dp3 r11.w, r4.wyz, r4.wyz mul r11.xyz, r10.wxz, r10.y mov r10.yzw, c33.yyzx +rsq r1.x, r11.w dp3 r11.z, r6.xyz, r11.xyz mad r11.xyw, c4.y, r10.zyyw, r2.zyyw dp3 r0.w, r0.xyz, r0.xyz add r10.x, c6.w, -r9.x min r9.x, r8.y, c6.w +rsq r1.w, r0.w mul r10.y, r8.z, r1.z mul r10.z, r8.w, r8.x mov r8.yzw, c34.yyzx min r10.x, r10.x, c6.w add r10.w, c6.w, -r9.x min r9.x, r10.y, c6.w mul r10.y, r10.z, r1.y mul r4.yzw, r4.yyzw, r1.x mad r11.xyw, c4.z, r8.zyyw, r11.xyyw mul r0.xyz, r0.xyz, r1.w max r8.y, r10.x, c6.x mad r10.x, r7.x, c6.y, c6.y dp3 r10.z, r6.xyz, r7.wyz min r8.z, r10.w, c6.w add r8.w, c6.w, -r9.x min r9.x, r10.y, c6.w add r7.xyz, c4.xyz, r4.wyz mul r4.yzw, r0.x, c32.yyzx mul r8.y, r8.y, r10.x max r8.z, r8.z, c6.x mad r10.y, r10.z, c6.y, c6.y min r8.w, r8.w, c6.w mul r10.xzw, r9.yyzw, r8.x add r8.x, c6.w, -r9.x mul r9.xyz, c14.xyz, r3.wxz dp3 r7.w, r7.xyz, r7.xyz mad r4.yzw, r0.y, c33.yyzx, r4.yyzw mul r8.z, r8.z, r10.y +rsq r1.x, r7.w max r8.w, r8.w, c6.x mad r9.w, r11.z, c6.y, c6.y dp3 r11.z, r6.xyz, r10.wxz min r8.x, r8.x, c6.w mul r10.xyz, r9.xyz, r8.y mul r9.xyz, c15.xyz, r3.wxz mad r4.yzw, r0.z, c34.yyzx, r4.yyzw mul r8.y, r8.w, r9.w max r8.w, r8.x, c6.x mad r9.w, r11.z, c6.y, c6.y mad r10.xyz, r9.xyz, r8.z, r10.xyz mul r9.xyz, c16.xyz, r3.wxz mul r7.xyz, r7.xyz, r1.x add r4.xzw, r11.yyxw, r4.yyzw dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r9.xyz, r8.y, r10.xyz mul r9.yzw, c17.yyzx, r3.xxzw +rcc r1.x, r12.w dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.w, r10.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r11.wyx, v4.xyz dp3 oT2.y, r11.wyx, v5.xyz dp3 oT2.z, r11.wyx, v6.xyz dp3 oT3.x, r4.wxz, v4.xyz dp3 oT3.y, r4.wxz, v5.xyz dp3 oT3.z, r4.wxz, v6.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 107 i = 116 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp3 r6.x, v1.xyz, c128.xyz dp3 r6.y, v1.xyz, c129.xyz dp3 r6.z, v1.xyz, c130.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz rcp r1.y, c106.w dp3 r8.x, r7.xyz, r7.xyz rcp r1.x, c107.w mov r2.xyz, c128.xyz rsq r1.z, r6.w add r11.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r8.y, r11.wyz, r11.wyz rcp r1.z, c108.w add r10.xzw, c108.yyzx, -r5.yyzx rsq r11.x, r8.y dp3 r8.z, r10.wxz, r10.wxz mov oD0.w, c103.w add r9.yzw, c109.yyzx, -r5.yyzx rsq r10.y, r8.z dp3 r8.w, r9.wyz, r9.wyz mov oT0, v2 mul r9.x, r8.x, r1.w mov oT1, v2 rsq r8.x, r8.w mul r9.x, r9.x, r1.y mul r8.y, r8.y, r11.x rcp r1.y, c109.w add r4.yzw, c101.yyzx, -r5.yyzx add r0.xyz, c101.xyz, -r5.xyz min r9.x, r9.x, c102.w mul r8.y, r8.y, r1.x mul r8.z, r8.z, r10.y mov r3.xzw, c104.yyzx mul r2.yzw, c100.x, r2.yyzx mul r7.xyz, r7.xyz, r1.w dp3 r7.x, r6.xyz, r7.xyz mul r7.yzw, r11.yyzw, r11.x dp3 r11.w, r4.wyz, r4.wyz mul r11.xyz, r10.wxz, r10.y mov r10.yzw, c129.yyzx rsq r1.x, r11.w dp3 r11.z, r6.xyz, r11.xyz mad r11.xyw, c100.y, r10.zyyw, r2.zyyw dp3 r0.w, r0.xyz, r0.xyz add r10.x, c102.w, -r9.x min r9.x, r8.y, c102.w rsq r1.w, r0.w mul r10.y, r8.z, r1.z mul r10.z, r8.w, r8.x mov r8.yzw, c130.yyzx min r10.x, r10.x, c102.w add r10.w, c102.w, -r9.x min r9.x, r10.y, c102.w mul r10.y, r10.z, r1.y mul r4.yzw, r4.yyzw, r1.x mad r11.xyw, c100.z, r8.zyyw, r11.xyyw mul r0.xyz, r0.xyz, r1.w max r8.y, r10.x, c102.x mad r10.x, r7.x, c102.y, c102.y dp3 r10.z, r6.xyz, r7.wyz min r8.z, r10.w, c102.w add r8.w, c102.w, -r9.x min r9.x, r10.y, c102.w add r7.xyz, c100.xyz, r4.wyz mul r4.yzw, r0.x, c128.yyzx mul r8.y, r8.y, r10.x max r8.z, r8.z, c102.x mad r10.y, r10.z, c102.y, c102.y min r8.w, r8.w, c102.w mul r10.xzw, r9.yyzw, r8.x add r8.x, c102.w, -r9.x mul r9.xyz, c110.xyz, r3.wxz dp3 r7.w, r7.xyz, r7.xyz mad r4.yzw, r0.y, c129.yyzx, r4.yyzw mul r8.z, r8.z, r10.y rsq r1.x, r7.w max r8.w, r8.w, c102.x mad r9.w, r11.z, c102.y, c102.y dp3 r11.z, r6.xyz, r10.wxz min r8.x, r8.x, c102.w mul r10.xyz, r9.xyz, r8.y mul r9.xyz, c111.xyz, r3.wxz mad r4.yzw, r0.z, c130.yyzx, r4.yyzw mul r8.y, r8.w, r9.w max r8.w, r8.x, c102.x mad r9.w, r11.z, c102.y, c102.y mad r10.xyz, r9.xyz, r8.z, r10.xyz mul r9.xyz, c112.xyz, r3.wxz mul r7.xyz, r7.xyz, r1.x add r4.xzw, r11.yyxw, r4.yyzw dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r8.w, r8.w, r9.w mad r10.xyz, r9.xyz, r8.y, r10.xyz mul r9.yzw, c17.yyzx, r3.xxzw dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r7.xyz mov r0.w, c5.w mad r10.xyz, r9.wyz, r8.w, r10.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r11.wyx, v4.xyz dp3 oT2.y, r11.wyx, v5.xyz dp3 oT2.z, r11.wyx, v6.xyz dp3 oT3.x, r4.wxz, v4.xyz dp3 oT3.y, r4.wxz, v5.xyz dp3 oT3.z, r4.wxz, v6.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (97) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y mov oT1, v2 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r0.xyz, c5.xyz, -r5.xyz mul r6.xyz, c4.x, r2.xyz dp3 r0.w, r0.xyz, r0.xyz mad r6.xyz, c4.y, r3.xyz, r6.xyz dph oPos.x, r5, c0 +rsq r1.x, r0.w mad r6.xyz, c4.z, r4.xyz, r6.xyz mul r0.xyz, r0.xyz, r1.x mul r7.xyz, r0.x, r2.xyz mad r7.xyz, r0.y, r3.xyz, r7.xyz mad r7.xyz, r0.z, r4.xyz, r7.xyz add r7.xyz, r6.xyz, r7.xyz dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul oPos.xyz, r12.xyz, c-38.xyz dp3 oT2.x, r6.xyz, v6.xyz +rcc r1.x, r12.w dp3 oT2.y, r6.xyz, v7.xyz dp3 oT2.z, r6.xyz, v8.xyz dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 32 i = 39 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oT1, v2 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r0.xyz, c101.xyz, -r5.xyz mul r6.xyz, c100.x, r2.xyz dp3 r0.w, r0.xyz, r0.xyz mad r6.xyz, c100.y, r3.xyz, r6.xyz dp3 r11, r5, c96 add oPos.x, r11, c96.w rsq r1.x, r0.w mad r6.xyz, c100.z, r4.xyz, r6.xyz mul r0.xyz, r0.xyz, r1.x mul r7.xyz, r0.x, r2.xyz mad r7.xyz, r0.y, r3.xyz, r7.xyz mad r7.xyz, r0.z, r4.xyz, r7.xyz add r7.xyz, r6.xyz, r7.xyz dp3 r11, r5, c97 add oPos.y, r11, c97.w dp3 r11, r5, c98 add oPos.z, r11, c98.w dp3 r11, r5, c99 add oPos.w, r11, c99.w dp3 oT2.x, r6.xyz, v6.xyz dp3 oT2.y, r6.xyz, v7.xyz dp3 oT2.z, r6.xyz, v8.xyz dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov r7.xyz, c8.xyz +mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mul r11.xyz, c14.xyz, r7.xyz +mov oT1, v2 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mov r0.w, c5.w mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c10.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz +rsq r1.x, r8.x add r10.yzw, c5.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz add r9.xzw, c5.yyzx, -r5.yyzx mul r11.w, r8.x, r1.x dp3 r7.w, r10.wyz, r10.wyz +rsq r1.z, r6.w mul r8.yzw, c4.x, r2.yyzx mul r6.xyz, r6.xyz, r1.z mad r8.yzw, c4.y, r3.yyzx, r8.yyzw mad r8.yzw, c4.z, r4.yyzx, r8.yyzw dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 dp3 r0.z, r9.wxz, r9.wxz +rsq r1.z, r7.w mul r9.y, r11.w, r1.y +rcc r1.w, r12.w mul r10.yzw, r10.yyzw, r1.z +rsq r1.y, r0.z min r9.y, r9.y, c6.w mul r9.xzw, r9.xxzw, r1.y add r10.yzw, c4.yyzx, r10.yyzw mul r5.xzw, r9.w, r2.yyzx mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz mad r9.xyw, r9.x, r3.yzzx, r5.xzzw dp3 r11.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r7.xyz, r9.z, r4.xyz, r9.wxy max r8.x, r8.x, c6.x mad r9.x, r11.w, c6.y, c6.y mul r10.yzw, r10.yyzw, r1.x add r7.xyz, r8.wyz, r7.xyz mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mul r10.xyz, r11.xyz, r8.x mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r8.wyz, v6.xyz dp3 oT2.y, r8.wyz, v7.xyz dp3 oT2.z, r8.wyz, v8.xyz dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz mad oPos.xyz, r12.xyz, r1.w, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 68 i = 77 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov r7.xyz, c104.xyz mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mul r11.xyz, c110.xyz, r7.xyz mov oT1, v2 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mov r0.w, c101.w mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 add r7.xyz, c106.xyz, -r5.xyz dp3 r6.x, v1.xyz, r2.xyz dp3 r8.x, r7.xyz, r7.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz rsq r1.x, r8.x add r10.yzw, c101.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz add r9.xzw, c101.yyzx, -r5.yyzx mul r11.w, r8.x, r1.x dp3 r7.w, r10.wyz, r10.wyz rsq r1.z, r6.w mul r8.yzw, c100.x, r2.yyzx mul r6.xyz, r6.xyz, r1.z mad r8.yzw, c100.y, r3.yyzx, r8.yyzw mad r8.yzw, c100.z, r4.yyzx, r8.yyzw dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 dp3 r0.z, r9.wxz, r9.wxz +rsq r1.z, r7.w mul r9.y, r11.w, r1.y mul r10.yzw, r10.yyzw, r1.z +rsq r1.y, r0.z min r9.y, r9.y, c6.w mul r9.xzw, r9.xxzw, r1.y add r10.yzw, c4.yyzx, r10.yyzw mul r5.xzw, r9.w, r2.yyzx mul r7.xyz, r7.xyz, r1.x add r8.x, c6.w, -r9.y dp3 r7.w, r10.wyz, r10.wyz mad r9.xyw, r9.x, r3.yzzx, r5.xzzw dp3 r11.w, r6.xyz, r7.xyz min r8.x, r8.x, c6.w +rsq r1.x, r7.w mad r7.xyz, r9.z, r4.xyz, r9.wxy max r8.x, r8.x, c6.x mad r9.x, r11.w, c6.y, c6.y mul r10.yzw, r10.yyzw, r1.x add r7.xyz, r8.wyz, r7.xyz mul r8.x, r8.x, r9.x dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mul r10.xyz, r11.xyz, r8.x +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r8.wyz, v6.xyz dp3 oT2.y, r8.wyz, v7.xyz dp3 oT2.z, r8.wyz, v8.xyz dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (40) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +rcp r1.y, c10.w mov oT0, v2 +rcp r1.x, c11.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y +mov oD0.w, c7.w mov r7.xyz, c8.xyz +mov oT1, v2 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mul r11.xyz, c14.xyz, r7.xyz mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c10.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c4.x, r2.yyzx +rsq r1.z, r6.w add r8.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z +rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r0.yzw, c5.yyzx, -r5.yyzx mad r9.xzw, c4.y, r3.yyzx, r9.xxzw mad r9.xzw, c4.z, r4.yyzx, r9.xxzw mul r10.yzw, r10.yyzw, r1.w dp3 r9.y, r6.xyz, r10.wyz dp3 r7.w, r0.wyz, r0.wyz +rsq r1.z, r11.w add r10.xyz, c5.xyz, -r5.xyz dph oPos.x, r5, c0 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r10.w, r8.x, r1.w dp3 r0.x, r10.xyz, r10.xyz +rsq r1.w, r7.w mul r10.w, r10.w, r1.y mul r11.w, r11.w, r1.z +rsq r1.y, r0.x min r10.w, r10.w, c6.w mul r11.w, r11.w, r1.x mul r5.xzw, r0.yyzw, r1.w +rcc r1.x, r12.w mul r0.xyz, r10.xyz, r1.y add r8.x, c6.w, -r10.w min r11.w, r11.w, c6.w add r10.yzw, c4.yyzx, r5.xxzw mul r5.xzw, r0.x, r2.yyzx min r8.x, r8.x, c6.w mul r8.yzw, r8.yyzw, r1.z add r11.w, c6.w, -r11.w dp3 r7.w, r10.wyz, r10.wyz mad r5.yzw, r0.y, r3.yyzx, r5.xxzw max r8.x, r8.x, c6.x +rsq r1.y, r7.w mad r9.y, r9.y, c6.y, c6.y dp3 r10.x, r6.xyz, r8.wyz min r8.y, r11.w, c6.w mad r5.yzw, r0.z, r4.yyzx, r5.yyzw mul r8.x, r8.x, r9.y max r8.y, r8.y, c6.x mad r9.y, r10.x, c6.y, c6.y mul r10.yzw, r10.yyzw, r1.y add r5.xzw, r9.xxzw, r5.yyzw mul r8.y, r8.y, r9.y mul r11.xyz, r11.xyz, r8.x mul r8.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r8.wxz, r8.y, r11.xyz mul oPos.xyz, r12.xyz, c-38.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r9.wxz, v6.xyz dp3 oT2.y, r9.wxz, v7.xyz dp3 oT2.z, r9.wxz, v8.xyz dp3 oT3.x, r5.wxz, v6.xyz dp3 oT3.y, r5.wxz, v7.xyz dp3 oT3.z, r5.wxz, v8.xyz mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 84 i = 93 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r1.y, c106.w mov oT0, v2 rcp r1.x, c107.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oD0.w, c103.w mov r7.xyz, c104.xyz mov oT1, v2 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mul r11.xyz, c110.xyz, r7.xyz mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r10.yzw, c106.yyzx, -r5.yyzx dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r10.wyz, r10.wyz mul r9.xzw, c100.x, r2.yyzx rsq r1.z, r6.w add r8.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r1.z rsq r1.w, r8.x dp3 r11.w, r8.wyz, r8.wyz add r0.yzw, c101.yyzx, -r5.yyzx mad r9.xzw, c100.y, r3.yyzx, r9.xxzw mad r9.xzw, c100.z, r4.yyzx, r9.xxzw mul r10.yzw, r10.yyzw, r1.w dp3 r9.y, r6.xyz, r10.wyz dp3 r7.w, r0.wyz, r0.wyz rsq r1.z, r11.w add r10.xyz, c101.xyz, -r5.xyz dph oPos.x, r5, c96 dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 mul r10.w, r8.x, r1.w dp3 r0.x, r10.xyz, r10.xyz +rsq r1.w, r7.w mul r10.w, r10.w, r1.y mul r11.w, r11.w, r1.z +rsq r1.y, r0.x min r10.w, r10.w, c6.w mul r11.w, r11.w, r1.x mul r5.xzw, r0.yyzw, r1.w mul r0.xyz, r10.xyz, r1.y add r8.x, c6.w, -r10.w min r11.w, r11.w, c6.w add r10.yzw, c4.yyzx, r5.xxzw mul r5.xzw, r0.x, r2.yyzx min r8.x, r8.x, c6.w mul r8.yzw, r8.yyzw, r1.z add r11.w, c6.w, -r11.w dp3 r7.w, r10.wyz, r10.wyz mad r5.yzw, r0.y, r3.yyzx, r5.xxzw max r8.x, r8.x, c6.x +rsq r1.y, r7.w mad r9.y, r9.y, c6.y, c6.y dp3 r10.x, r6.xyz, r8.wyz min r8.y, r11.w, c6.w mad r5.yzw, r0.z, r4.yyzx, r5.yyzw mul r8.x, r8.x, r9.y max r8.y, r8.y, c6.x mad r9.y, r10.x, c6.y, c6.y mul r10.yzw, r10.yyzw, r1.y add r5.xzw, r9.xxzw, r5.yyzw mul r8.y, r8.y, r9.y mul r11.xyz, r11.xyz, r8.x mul r8.xzw, c15.yyzx, r7.yyzx dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r10.wyz mov r0.w, c5.w mad r10.xyz, r8.wxz, r8.y, r11.xyz +lit r1.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r1.z, c9.w dp3 oT2.x, r9.wxz, v6.xyz dp3 oT2.y, r9.wxz, v7.xyz dp3 oT2.z, r9.wxz, v8.xyz dp3 oT3.x, r5.wxz, v6.xyz dp3 oT3.y, r5.wxz, v7.xyz dp3 oT3.z, r5.wxz, v8.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (44) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x rcp r9.y, c10.w mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y rcp r9.x, c11.w mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z rcp r9.z, c12.w mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r7.xyz, c10.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r7.xyz, r7.xyz rsq r11.x, r6.w add r11.yzw, c11.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.x rsq r11.x, r8.x dp3 r8.y, r11.wyz, r11.wyz add r10.yzw, c12.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r10.wyz, r10.wyz mul r9.w, r8.x, r11.x rsq r8.x, r8.z add r0.yzw, c5.yyzx, -r5.yyzx add r1.xzw, c5.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r11.x dp3 r11.x, r6.xyz, r7.xyz mul r9.y, r9.w, r9.y mul r9.w, r8.y, r10.x dp3 r7.w, r0.wyz, r0.wyz dph oPos.x, r5, c0 rsq r8.y, r7.w mul r7.yzw, c4.x, r2.yyzx mad r7.yzw, c4.y, r3.yyzx, r7.yyzw mul r0.xzw, r0.yyzw, r8.y mad r7.yzw, c4.z, r4.yyzx, r7.yyzw add r0.xzw, c4.yyzx, r0.xxzw dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 dp3 r0.y, r1.wxz, r1.wxz min r9.y, r9.y, c6.w mul r9.x, r9.w, r9.x mul r9.w, r8.z, r8.x rsq r8.y, r0.y add r8.z, c6.w, -r9.y min r9.y, r9.x, c6.w mul r9.x, r9.w, r9.z mov r5.xzw, c8.yyzx mul oPos.xyz, r12.xyz, c-38.xyz +rcc r1.y, r12.w mov oD0.w, c7.w mov oT0, v2 mov oT1, v2 dp3 oT2.x, r7.wyz, v6.xyz dp3 oT2.y, r7.wyz, v7.xyz dp3 oT2.z, r7.wyz, v8.xyz mad oPos.xyz, r12.xyz, r1.y, c-37.xyz mul r1.yzw, r1.xxzw, r8.y mul r2.yzw, r1.w, r2.yyzx mad r3.yzw, r1.y, r3.yyzx, r2.yyzw min r8.y, r8.z, c6.w mul r11.yzw, r11.yyzw, r10.x add r8.z, c6.w, -r9.y min r9.y, r9.x, c6.w max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c6.w mul r11.xyz, r10.wyz, r8.x add r8.x, c6.w, -r9.y dp3 r7.x, r0.wxz, r0.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x mad r9.y, r9.z, c6.y, c6.y dp3 r9.z, r6.xyz, r11.xyz min r8.x, r8.x, c6.w mul r11.xyz, c14.xyz, r5.wxz rsq r11.w, r7.x mad r10.xyz, r1.z, r4.xyz, r3.wyz mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r11.xyz, r11.xyz, r8.y mul r9.xyw, c15.zyyx, r5.zxxw mul r4.yzw, r0.xxzw, r11.w add r7.xyz, r7.wyz, r10.xyz mul r8.x, r8.x, r9.z mad r10.xyz, r9.wyx, r8.z, r11.xyz mul r11.xyz, c16.xyz, r5.wxz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r4.wyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r10.xyz lit r11.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r11.z, c9.w dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 60 i = 67 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x rcp r9.y, c106.w mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y rcp r9.x, c107.w mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z rcp r9.z, c108.w mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r6.x, v1.xyz, r2.xyz dp3 r6.y, v1.xyz, r3.xyz dp3 r6.z, v1.xyz, r4.xyz add r7.xyz, c106.xyz, -r5.xyz dp3 r6.w, r6.xyz, r6.xyz dp3 r8.x, r7.xyz, r7.xyz rsq r11.x, r6.w add r11.yzw, c107.yyzx, -r5.yyzx mul r6.xyz, r6.xyz, r11.x rsq r11.x, r8.x dp3 r8.y, r11.wyz, r11.wyz add r10.yzw, c108.yyzx, -r5.yyzx rsq r10.x, r8.y dp3 r8.z, r10.wyz, r10.wyz mul r9.w, r8.x, r11.x rsq r8.x, r8.z add r0.yzw, c101.yyzx, -r5.yyzx add r1.xzw, c101.yyzx, -r5.yyzx mul r7.xyz, r7.xyz, r11.x dp3 r11.x, r6.xyz, r7.xyz mul r9.y, r9.w, r9.y mul r9.w, r8.y, r10.x dp3 r7.w, r0.wyz, r0.wyz dph oPos.x, r5, c96 rsq r8.y, r7.w mul r7.yzw, c4.x, r2.yyzx mad r7.yzw, c4.y, r3.yyzx, r7.yyzw mul r0.xzw, r0.yyzw, r8.y mad r7.yzw, c4.z, r4.yyzx, r7.yyzw add r0.xzw, c4.yyzx, r0.xxzw dph oPos.y, r5, c1 dph oPos.z, r5, c2 dph oPos.w, r5, c3 dp3 r0.y, r1.wxz, r1.wxz min r9.y, r9.y, c6.w mul r9.x, r9.w, r9.x mul r9.w, r8.z, r8.x rsq r8.y, r0.y add r8.z, c6.w, -r9.y min r9.y, r9.x, c6.w mul r9.x, r9.w, r9.z mov r5.xzw, c8.yyzx mov oD0.w, c7.w mov oT0, v2 mov oT1, v2 dp3 oT2.x, r7.wyz, v6.xyz dp3 oT2.y, r7.wyz, v7.xyz dp3 oT2.z, r7.wyz, v8.xyz mul r1.yzw, r1.xxzw, r8.y mul r2.yzw, r1.w, r2.yyzx mad r3.yzw, r1.y, r3.yyzx, r2.yyzw min r8.y, r8.z, c6.w mul r11.yzw, r11.yyzw, r10.x add r8.z, c6.w, -r9.y min r9.y, r9.x, c6.w max r8.y, r8.y, c6.x mad r9.x, r11.x, c6.y, c6.y dp3 r9.z, r6.xyz, r11.wyz min r8.z, r8.z, c6.w mul r11.xyz, r10.wyz, r8.x add r8.x, c6.w, -r9.y dp3 r7.x, r0.wxz, r0.wxz mul r8.y, r8.y, r9.x max r8.z, r8.z, c6.x mad r9.y, r9.z, c6.y, c6.y dp3 r9.z, r6.xyz, r11.xyz min r8.x, r8.x, c6.w mul r11.xyz, c14.xyz, r5.wxz rsq r11.w, r7.x mad r10.xyz, r1.z, r4.xyz, r3.wyz mul r8.z, r8.z, r9.y max r8.x, r8.x, c6.x mad r9.z, r9.z, c6.y, c6.y mul r11.xyz, r11.xyz, r8.y mul r9.xyw, c15.zyyx, r5.zxxw mul r4.yzw, r0.xxzw, r11.w add r7.xyz, r7.wyz, r10.xyz mul r8.x, r8.x, r9.z mad r10.xyz, r9.wyx, r8.z, r11.xyz mul r11.xyz, c16.xyz, r5.wxz dp3 r0.x, r6.xyz, c4.xyz dp3 r0.y, r6.xyz, r4.wyz mov r0.w, c5.w mad r10.xyz, r11.xyz, r8.x, r10.xyz lit r11.z, r0.xyyw add oD0.xyz, r10.xyz, c7.xyz mul oD1.w, r11.z, c9.w dp3 oT3.x, r7.xyz, v6.xyz dp3 oT3.y, r7.xyz, v7.xyz dp3 oT3.z, r7.xyz, v8.xyz ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (43) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4 +mov oD0.w, c7 mov oT0, v2 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y mov oT1, v2 mad r5, v5.y, c[a0.x], r2 mad r6, v5.y, c[a0.x+1], r3 mad r7, v5.y, c[a0.x+2], r4 mov a0.x, v4.z mad r8, v5.z, c[a0.x], r5 mad r9, v5.z, c[a0.x+1], r6 mad r10, v5.z, c[a0.x+2], r7 dp4 r11.x, v0, r8 dp4 r11.y, v0, r9 dp4 r11.z, v0, r10 dp3 r0.x, v1, r8 dp3 r0.y, v1, r9 dp3 r0.z, v1, r10 dph oPos.x, r11, c0 dp3 r2.w, r0.xyz, r0.xyz dph oPos.z, r11, c2 dph oPos.y, r11, c1 +rsq r1.x, r2.w dph oPos.w, r11, c3 mul r3.xyz, r0, r1.x add r4.xyz, c10.xyz, -r11.xyz mov r0.x, c10.w dp3 r5.x, r4, r4 +rcp r1.y, r0 rsq r1.x, r5.x mul r6.y, r5.x, r1.x mul r7.xyz, r4.xyz, r1.x dp3 r2.x, r3.xyz, r7.xyz mul r0.y, r6.y, r1.y min r2.y, r0.y, c6.w add r0.x, c6.w, -r2.y add r7.xyz, c11.xyz, -r11.xyz min r4.x, r0.x, c6.w max r5.x, r4.x, c6.x mad r4.x, r2.x, c6.y, c6.y dp3 r0.y, r7.xyz, r7.xyz mov r2.x, c11.w mul r6.x, r5, r4 +rsq r1.x, r0.y mov r4.x, c13.w mul r2.y, r0, r1.x +rcp r1.y, r2 mul r0.xyz, r7.xyz, r1.x mul r4.y, r2.y, r1.y min r2.y, r4.y, c6.w add r4.y, c6.w, -r2.y dp3 r5.y, r3.xyz, r0.xyz min r6.y, r4.y, c6.w max r7.y, r6.y, c6.x mad r6.y, r5.y, c6.y, c6.y add r2.xyz, c12.xyz, -r11.xyz mul r0.y, r7.y, r6.y dp3 r0.z, r2.xyz, r2.xyz mov r0.x, c12.w +rsq r1.x, r0.z mul r4.y, r0.z, r1.x +rcp r1.y, r0 mul r5.xyz, r2.xyz, r1.x dp3 r6.z, r3.xyz, r5.xyz mul r2.y, r4.y, r1.y min r4.y, r2, c6.w +rcp r1.y, r4 add r4.z, c6.w, -r4.y mad r2.z, r6.z, c6.y, c6.y min r7.z, r4.z, c6.w max r0.z, r7.z, c6.x mul r4.z, r0.z, r2.z add r2.xyz, c13.xyz, -r11.xyz dp3 r11.w, r2.xyz, r2.xyz rsq r1.x, r11.w mul r4.y, r11.w, r1.x mul r5.xyz, r2.xyz, r1.x dp3 r7.w, r3.xyz, r5.xyz mul r6.y, r4.y, r1.y min r7.y, r6.y, c6.w add r6.w, c6.w, -r7.y mov r2.xyz, c8 min r11.w, r6.w, c6.w max r0.w, r11.w, c6.x mad r11.w, r7.w, c6.y, c6.y mul r5.xyz, c14, r2 mul r2.w, r0.w, r11.w mul r7.xyz, r5, r6.x mul r5.xyz, c15, r2 mad r6.xyz, r5, r0.y, r7 mul r7.xyz, c16, r2 mad r0.xyz, r7, r4.z, r6 mul r4.xyz, c17, r2 mad r2.xyz, r4, r2.w, r0 dp3 r0.x, r3, c4 add oD0.xyz, r2.xyz, c7.xyz add r2.xyz, c5, -r11 mov r0.w, c5.w dp3 r2.w, r2.xyz, r2.xyz mul r7.xyz, c4.x, r8 +rsq r1.x, r2.w mul r4.xyz, r2, r1.x add r5.xyz, c4, r4 dp3 r4.w, r5.xyz, r5.xyz rsq r1.x, r4.w mul r6.xyz, r5, r1.x dp3 r0.y, r3, r6 lit r1.z, r0 mad r0.xyz, c4.y, r9, r7 mad r2.xyz, c4.z, r10, r0 mul r6.x, r1.z, c9.w mov oD1.w, r6.x dp3 oT2.x, r2, v6 dp3 oT2.y, r2, v7 dp3 oT2.z, r2, v8 add r0.xyz, c5, -r11 dp3 r11.w, r0.xyz, r0.xyz rsq r1.x, r11.w mul r3.xyz, r0, r1.x mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w mul r4.xyz, r3.x, r8 mad r5.xyz, r3.y, r9, r4 mad r4.xyz, r3.z, r10, r5 add r5.xyz, r2, r4 ; -- Passing the truncation limit -- mad oPos.xyz, r12, r1.x, c-37 dp3 oT3.x, r5, v6 dp3 oT3.y, r5, v7 dp3 oT3.z, r5, v8 ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 122 i = 127 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4 mov oD0.w, c103 mov oT0, v2 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y mov oT1, v2 mad r5, v5.y, c[a0.x+96], r2 mad r6, v5.y, c[a0.x+97], r3 mad r7, v5.y, c[a0.x+98], r4 mov a0.x, v4.z mad r8, v5.z, c[a0.x+96], r5 mad r9, v5.z, c[a0.x+97], r6 mad r10, v5.z, c[a0.x+98], r7 dp4 r11.x, v0, r8 dp4 r11.y, v0, r9 dp4 r11.z, v0, r10 dp3 r0.x, v1, r8 dp3 r0.y, v1, r9 dp3 r0.z, v1, r10 dp3 r1, r11, c96 add oPos.x, r1, c96.w dp3 r2.w, r0.xyz, r0.xyz dp3 r1, r11, c98 add oPos.z, r1, c98.w dp3 r1, r11, c97 add oPos.y, r1, c97.w rsq r1.x, r2.w dph oPos.w, r11, c99 mul r3.xyz, r0, r1.x add r4.xyz, c10.xyz, -r11.xyz mov r0.x, c10.w dp3 r5.x, r4, r4 +rcp r1.y, r0 rsq r1.x, r5.x mul r6.y, r5.x, r1.x mul r7.xyz, r4.xyz, r1.x dp3 r2.x, r3.xyz, r7.xyz mul r0.y, r6.y, r1.y min r2.y, r0.y, c6.w add r0.x, c6.w, -r2.y add r7.xyz, c11.xyz, -r11.xyz min r4.x, r0.x, c6.w max r5.x, r4.x, c6.x mad r4.x, r2.x, c6.y, c6.y dp3 r0.y, r7.xyz, r7.xyz mov r2.x, c11.w mul r6.x, r5, r4 +rsq r1.x, r0.y mov r4.x, c13.w mul r2.y, r0, r1.x +rcp r1.y, r2 mul r0.xyz, r7.xyz, r1.x mul r4.y, r2.y, r1.y min r2.y, r4.y, c6.w add r4.y, c6.w, -r2.y dp3 r5.y, r3.xyz, r0.xyz min r6.y, r4.y, c6.w max r7.y, r6.y, c6.x mad r6.y, r5.y, c6.y, c6.y add r2.xyz, c12.xyz, -r11.xyz mul r0.y, r7.y, r6.y dp3 r0.z, r2.xyz, r2.xyz mov r0.x, c12.w +rsq r1.x, r0.z mul r4.y, r0.z, r1.x +rcp r1.y, r0 mul r5.xyz, r2.xyz, r1.x dp3 r6.z, r3.xyz, r5.xyz mul r2.y, r4.y, r1.y min r4.y, r2, c6.w +rcp r1.y, r4 add r4.z, c6.w, -r4.y mad r2.z, r6.z, c6.y, c6.y min r7.z, r4.z, c6.w max r0.z, r7.z, c6.x mul r4.z, r0.z, r2.z add r2.xyz, c13.xyz, -r11.xyz dp3 r11.w, r2.xyz, r2.xyz rsq r1.x, r11.w mul r4.y, r11.w, r1.x mul r5.xyz, r2.xyz, r1.x dp3 r7.w, r3.xyz, r5.xyz mul r6.y, r4.y, r1.y min r7.y, r6.y, c6.w add r6.w, c6.w, -r7.y mov r2.xyz, c8 min r11.w, r6.w, c6.w max r0.w, r11.w, c6.x mad r11.w, r7.w, c6.y, c6.y mul r5.xyz, c14, r2 mul r2.w, r0.w, r11.w mul r7.xyz, r5, r6.x mul r5.xyz, c15, r2 mad r6.xyz, r5, r0.y, r7 mul r7.xyz, c16, r2 mad r0.xyz, r7, r4.z, r6 mul r4.xyz, c17, r2 mad r2.xyz, r4, r2.w, r0 dp3 r0.x, r3, c4 add oD0.xyz, r2.xyz, c7.xyz add r2.xyz, c5, -r11 mov r0.w, c5.w dp3 r2.w, r2.xyz, r2.xyz mul r7.xyz, c4.x, r8 +rsq r1.x, r2.w mul r4.xyz, r2, r1.x add r5.xyz, c4, r4 dp3 r4.w, r5.xyz, r5.xyz rsq r1.x, r4.w mul r6.xyz, r5, r1.x dp3 r0.y, r3, r6 lit r1.z, r0 mad r0.xyz, c4.y, r9, r7 mad r2.xyz, c4.z, r10, r0 mul r6.x, r1.z, c9.w mov oD1.w, r6.x dp3 oT2.x, r2, v6 dp3 oT2.y, r2, v7 dp3 oT2.z, r2, v8 add r0.xyz, c5, -r11 dp3 r11.w, r0.xyz, r0.xyz rsq r1.x, r11.w mul r3.xyz, r0, r1.x mul r4.xyz, r3.x, r8 mad r5.xyz, r3.y, r9, r4 mad r4.xyz, r3.z, r10, r5 ----------------------- [0x34BC] EmuWarn: Couldn't assemble recompiled vertex shader [0x34BC] EmuWarn: (31) : (Assembly Error) syntax error [0x34BC] EmuWarn: Couldn't recompile vertex shader function. [0x34BC] EmuWarn: Trying fallback: vs.1.1 mov oPos, v0 DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), NeedPatching: 0 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 dp4 r5.x, v0, c32 dp4 r5.y, v0, c33 dp4 r5.z, v0, c34 dp4 r11.x, v1, c20 dph r9.x, r5, c0 dph r9.y, r5, c1 dph r9.w, r5, c3 +dph oPos.w, r5, c3 dp4 r11.y, v1, c21 dp4 r11.z, v1, c22 +rcp r1.w, r9.w dph r9.z, r5, c2 +rcc r1.x, r12.w dp3 r11.w, r11.xyz, r11.xyz +mov oD0, c18 mul r10.zw, r9.yyyx, r1.w mul r9.xy, r10.wz, c19.xy +mov oPos.xyz, r9 rsq r11.w, r11.w add r9.xy, r9.xy, c19.x mul r11.xy, r11.xy, r11.w mul oPos.xyz, r12.xyz, c-38.xyz mad oT0.xy, r11.xy, c19.w, r9.xy mad oPos.xyz, r12.xyz, r1.x, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 21 i = 22 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 dp4 r5.x, v0, c128 dp4 r5.y, v0, c129 dp4 r5.z, v0, c130 dp4 r11.x, v1, c116 dp3 r9.x, r5, c96 add r9.x, r9.x, c96.w dp3 r9.y, r5, c97 add r9.y, r9.y, c97.w dp3 r9.w, r5, c99 add r9.w, r9.w, c99.w dp3 r10, r5, c99 add oPos.w, r10, c99.w dp4 r11.y, v1, c117 dp4 r11.z, v1, c118 rcp r1.w, r9.w dp3 r9.z, r5, c98 add r9.z, r9.z, c98.w dp3 r11.w, r11.xyz, r11.xyz mov oD0, c114 mul r10.zw, r9.yyyx, r1.w mul r9.xy, r10.wz, c115.xy mov oPos.xyz, r9 rsq r11.w, r11.w add r9.xy, r9.xy, c115.x mul r11.xy, r11.xy, r11.w mad oT0.xy, r11.xy, c115.w, r9.xy ----------------------- DWORD dwVSHDecl[] = { D3DVSD_STREAM(0), D3DVSD_REG(0, D3DVSDT_FLOAT3), D3DVSD_REG(1, D3DVSDT_FLOAT3), D3DVSD_REG(2, D3DVSDT_FLOAT2), D3DVSD_REG(3, D3DVSDT_FLOAT2), D3DVSD_REG(4, D3DVSDT_SHORT3 /* xbox ext. nsp */), D3DVSD_REG(5, D3DVSDT_FLOAT3), D3DVSD_REG(6, D3DVSDT_FLOAT3), D3DVSD_REG(7, D3DVSDT_FLOAT3), D3DVSD_REG(8, D3DVSDT_FLOAT3), NeedPatching: 1 D3DVSD_END() }; NbrStreams: 1 -- Before conversion -- xvs.1.1 mov a0.x, v4.x +mov oD0, c18 dp4 r11.x, v1, c20 mul r2, v5.x, c[a0.x] mul r3, v5.x, c[a0.x+1] mul r4, v5.x, c[a0.x+2] mov a0.x, v4.y dp4 r11.y, v1, c21 mad r2, v5.y, c[a0.x], r2 mad r3, v5.y, c[a0.x+1], r3 mad r4, v5.y, c[a0.x+2], r4 mov a0.x, v4.z dp4 r11.z, v1, c22 mad r2, v5.z, c[a0.x], r2 mad r3, v5.z, c[a0.x+1], r3 mad r4, v5.z, c[a0.x+2], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11.w, r11.xyz, r11.xyz dph r9.x, r5, c0 dph r9.y, r5, c1 +rsq r1.w, r11.w dph r9.w, r5, c3 +dph oPos.w, r5, c3 dph r9.z, r5, c2 mul r11.xy, r11.xy, r1.w +rcp r1.x, r9.w mov oPos.xyz, r9 +rcc r1.y, r12.w mul r9.xy, r9.xy, r1.x mul r9.xy, r9.xy, c19.xy add r9.xy, r9.xy, c19.x mul oPos.xyz, r12.xyz, c-38.xyz mad oT0.xy, r11.xy, c19.w, r9.xy mad oPos.xyz, r12.xyz, r1.y, c-37.xyz ----------------------- Deleted mul oPos.xyz, r12, c-38 PosC38 = 33 i = 34 Deleted +rcc r1.x, r12.w Deleted mad oPos.xyz, r12, r1.x, c-37 [0x34BC] EmuWarn: Can't simulate dph for other than output r registers (yet) -- After conversion --- vs.1.1 mov a0.x, v4.x mov oD0, c114 dp4 r11.x, v1, c116 mul r2, v5.x, c[a0.x+96] mul r3, v5.x, c[a0.x+97] mul r4, v5.x, c[a0.x+98] mov a0.x, v4.y dp4 r11.y, v1, c117 mad r2, v5.y, c[a0.x+96], r2 mad r3, v5.y, c[a0.x+97], r3 mad r4, v5.y, c[a0.x+98], r4 mov a0.x, v4.z dp4 r11.z, v1, c118 mad r2, v5.z, c[a0.x+96], r2 mad r3, v5.z, c[a0.x+97], r3 mad r4, v5.z, c[a0.x+98], r4 dp4 r5.x, v0, r2 dp4 r5.y, v0, r3 dp4 r5.z, v0, r4 dp3 r11.w, r11.xyz, r11.xyz dp3 r9.x, r5, c96 add r9.x, r9.x, c96.w dp3 r9.y, r5, c97 add r9.y, r9.y, c97.w rsq r1.w, r11.w dp3 r9.w, r5, c99 add r9.w, r9.w, c99.w dp3 r10, r5, c99 add oPos.w, r10, c99.w dp3 r9.z, r5, c98 add r9.z, r9.z, c98.w mul r11.xy, r11.xy, r1.w rcp r1.x, r9.w mov oPos.xyz, r9 mul r9.xy, r9.xy, r1.x mul r9.xy, r9.xy, c115.xy add r9.xy, r9.xy, c115.x mad oT0.xy, r11.xy, c115.w, r9.xy ----------------------- // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(7, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_T1 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T3 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_R1, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_DOT_PRODUCT | !!!PS_COMBINEROUTPUT_CD_DOT_PRODUCT!!!); ---------- szOp: |dp3| szOp1: |dp3| szOp2: |add| szMod: || szInputAB1: |t1| szInputAB2: |t2| szInputCD1: |t1| szInputCD2: |t3| szOutAB: |r0| szOutCD: |r1| szABCDOutput: || new command: dp3 r0, t1_bx2, t2_bx2 dp3 r1, t1_bx2, t3_bx2 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t0| szInputCD1: |v0| szInputCD2: |t0| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: mul r1, r0, t0 mad r0, v0, t0, r1 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_R1 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.b, r1.b // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |v0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, v0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, r1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[4] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[4] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[4] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[4] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, r1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[5] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[5] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[5] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[5] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |v1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, v1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[6] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[6] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |r1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, r1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[6] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[6] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 tex t3 ; Stage 0 dp3 r0, t1_bx2, t2_bx2 dp3 r1, t1_bx2, t3_bx2 mov r0.a, t0.a ; Stage 1 mul r1, r0, t0 mad r0, v0, t0, r1 mul r1.a, r1.b, r1.b ; Stage 2 mul r0, r0, v0 ; Stage 3 mul r1.a, r1.a, r1.a ; Stage 4 mul r1.a, r1.a, r1.a ; Stage 5 mul r1.a, r1.a, v1.a ; Stage 6 add r0, r0, r1.a *** PIXEL SHADER CREATION FINISHED! [0x34BC] EmuWarn: Couldn't assemble recompiled pixel shader [0x34BC] EmuWarn: (Global Validation Error) Too many arithmetic instruction slots used: 11. Max. allowed (counting any co-issued pairs as 1) is 8. (Global Validation Error) Total number of instruction slots used too high: 15. Max. allowed (counting any co-issued pairs as 1) is 12. // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(7, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_T1 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, PS_REGISTER_T3 | PS_INPUTMAPPING_EXPAND_NORMAL | PS_CHANNEL_RGB, ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_R1, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_DOT_PRODUCT | !!!PS_COMBINEROUTPUT_CD_DOT_PRODUCT!!!); ---------- szOp: |dp3| szOp1: |dp3| szOp2: |add| szMod: || szInputAB1: |t1| szInputAB2: |t2| szInputCD1: |t1| szInputCD2: |t3| szOutAB: |r0| szOutCD: |r1| szABCDOutput: || new command: dp3 r0, t1_bx2, t2_bx2 dp3 r1, t1_bx2, t3_bx2 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, v0.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t0| szInputCD1: |v0| szInputCD2: |t0| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: mul r1, r0, t0 mad r0, v0, t0, r1 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_R1 | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.b, r1.b // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |v0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, v0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, r1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[4] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[4] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[4] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[4] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |r1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, r1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[5] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[5] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[5] = PS_COMBINERINPUTS( PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[5] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r1| szInputAB2: |v1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mul r1.a, r1.a, v1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[6] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[6] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |r1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, r1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[6] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[6] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 tex t3 ; Stage 0 dp3 r0, t1_bx2, t2_bx2 dp3 r1, t1_bx2, t3_bx2 mov r0.a, v0.a ; Stage 1 mul r1, r0, t0 mad r0, v0, t0, r1 mul r1.a, r1.b, r1.b ; Stage 2 mul r0, r0, v0 ; Stage 3 mul r1.a, r1.a, r1.a ; Stage 4 mul r1.a, r1.a, r1.a ; Stage 5 mul r1.a, r1.a, v1.a ; Stage 6 add r0, r0, r1.a *** PIXEL SHADER CREATION FINISHED! [0x34BC] EmuWarn: Couldn't assemble recompiled pixel shader [0x34BC] EmuWarn: (Global Validation Error) Too many arithmetic instruction slots used: 11. Max. allowed (counting any co-issued pairs as 1) is 8. (Global Validation Error) Total number of instruction slots used too high: 15. Max. allowed (counting any co-issued pairs as 1) is 12. // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mov r0, v0 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v1| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mov r1.a, v1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |r1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, r1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f ; Stage 0 mov r0, v0 ; Stage 1 mov r1.a, v1.a ; Stage 2 add r0, r0, r1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mov r0, v0 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 ; Stage 0 mov r0, v0 ; Stage 1 mul r0, r0, t0 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, t0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R1, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v1| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r1.a| szOutCD: || szABCDOutput: || new command: mov r1.a, v1.a // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |v0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, v0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_R1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |r1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, r1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, t0, t1 ; Stage 1 mov r1.a, v1.a ; Stage 2 mul r0, r0, v0 ; Stage 3 add r0, r0, r1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, v1.a ; Stage 2 mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, v1.a ; Stage 2 mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, v1.a ; Stage 2 mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(2, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, v1.a mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(2, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, v1.a mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(2, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, v1.a mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a ; Stage 3 mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_ALPHA, Looking for 1 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |t0| szInputAB2: |1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0.a| szOutCD: || szABCDOutput: || new command: mov r0.a, t0.a *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a ; Stage 3 mov r0.a, t0.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(3, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c2 added: def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |t0| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c3 added: def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 1.000000f, 1.000000f, 1.000000f, 1.000000f def c2, 0.000000f, 0.000000f, 0.000000f, 0.000000f tex t0 tex t1 tex t2 ; Stage 0 mul_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x2 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t1| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 mul_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x2 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_RGB, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_R0, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |t2| szInputCD1: |0| szInputCD2: |0| szOutAB: |r0| szOutCD: || szABCDOutput: || new command: mul_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 mul_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_1 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x2| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x2 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x2 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! // Xbox hard coded pixel shader // -------------------------- // Constants // -------------------------- pPSD.PSFinalCombinerConstants = PS_FINALCOMBINERCONSTANTS(15,15,PS_GLOBALFLAGS_TEXMODE_ADJUST); // -------------------------- // Input Textures // -------------------------- pPSD.PSInputTexture = PS_INPUTTEXTURE(0,0,0,0); // -------------------------- // Texture Modes // -------------------------- pPSD.PSTextureModes = PS_TEXTUREMODES( PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_PROJECT2D, PS_TEXTUREMODES_NONE); // -------------------------- // Combiner Count // -------------------------- pPSD.PSCombinerCount = PS_COMBINERCOUNT(4, PS_COMBINERCOUNT_MUX_MSB | PS_COMBINERCOUNT_UNIQUE_C0 | PS_COMBINERCOUNT_SAME_C1); // -------------------------- // Constant Mappings // -------------------------- pPSD.PSC0Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); pPSD.PSC1Mapping = PS_CONSTANTMAPPING(15,15,15,15,15,15,15,15); // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[0] = PS_COMBINERINPUTS( PS_REGISTER_V0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 detected: 1.000000:c2 added: def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f Looking for 1 ); pPSD.PSRGBOutputs[0] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |v0| szInputAB2: |1| szInputCD1: |t0| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, v0, t0 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[1] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[1] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t1 // -------------------------- // RGB/Alpha // -------------------------- pPSD.PSRGBInputs[2] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_T2 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[2] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_SHIFTLEFT_2 | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: |_x4| szInputAB1: |r0| szInputAB2: |1| szInputCD1: |t2| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| [0x34BC] EmuWarn: Pixel Shader: Destination modifier present! new command: add_x4 r0, r0, t2 // -------------------------- // RGB // -------------------------- pPSD.PSRGBInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_R0 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_RGB, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, PS_REGISTER_V1 | PS_INPUTMAPPING_SIGNED_IDENTITY | PS_CHANNEL_ALPHA, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_INVERT | PS_CHANNEL_RGB, Looking for 1 Looking for 1 ); pPSD.PSRGBOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_R0, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |r0| szInputAB2: |1| szInputCD1: |v1| szInputCD2: |1| szOutAB: || szOutCD: || szABCDOutput: |r0| new command: add r0, r0, v1.a // -------------------------- // Alpha // -------------------------- pPSD.PSAlphaInputs[3] = PS_COMBINERINPUTS( PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, PS_REGISTER_ZERO | PS_INPUTMAPPING_UNSIGNED_IDENTITY | PS_CHANNEL_BLUE, Looking for 0 detected: 0.000000:c3 added: def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f Looking for 0 Looking for 0 Looking for 0 ); pPSD.PSAlphaOutputs[3] = PS_COMBINEROUTPUTS( PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_REGISTER_ZERO, PS_COMBINEROUTPUT_IDENTITY | PS_COMBINEROUTPUT_AB_CD_SUM | PS_COMBINEROUTPUT_AB_MULTIPLY | PS_COMBINEROUTPUT_CD_MULTIPLY); ---------- szOp: |mul| szOp1: |mul| szOp2: |add| szMod: || szInputAB1: |0| szInputAB2: |0| szInputCD1: |0| szInputCD2: |0| szOutAB: || szOutCD: || szABCDOutput: || *** RESULT: ps.1.3 def c3, 0.000000f, 0.000000f, 0.000000f, 0.000000f def c2, 1.000000f, 1.000000f, 1.000000f, 1.000000f tex t0 tex t1 tex t2 ; Stage 0 add_x4 r0, v0, t0 ; Stage 1 add_x4 r0, r0, t1 ; Stage 2 add_x4 r0, r0, t2 ; Stage 3 add r0, r0, v1.a *** PIXEL SHADER CREATION FINISHED! [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_NOT_FOUND) [0x34BC] EmuWarn: MEM_NOZERO flag is not supported! [0x34BC] EmuWarn: MEM_NOZERO flag is not supported! [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: MEM_NOZERO flag is not supported! [0x34BC] EmuWarn: NtReadFile Failed! (0xC0000011) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x3234] EmuWarn: MEM_NOZERO flag is not supported! [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x3234] EmuWarn: MEM_NOZERO flag is not supported! [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] EmuPatch_IDirectSoundBuffer_SetEG unimplemented! EmuPatch_IDirectSoundBuffer_SetLFO unimplemented! EmuPatch_IDirectSoundBuffer_SetHeadroom unimplemented! EmuPatch_IDirectSoundBuffer_SetFilter unimplemented! EmuPatch_IDirectSoundBuffer_SetMixBins unimplemented! [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x3234] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_NAME_COLLISION) [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32(0x00000012) [Unaligned unimplemented] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32(0x00000012) [Unaligned unimplemented] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFF1D9) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFF1D9) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x34BC] EmuWarn: EmuX86_Write32Aligned(0x00000018, 0xFFFFFE0C) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000070) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read32Aligned(0x00000008) [Unknown address] [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] EmuPatch_IDirectSoundBuffer_SetLoopRegion unimplemented! [0x34BC] EmuWarn: EmuX86_Read8(0x00000012) [Unknown address] [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: EmuKrnl: IoCreateFile Failed! (STATUS_OBJECT_PATH_NOT_FOUND) [0x34BC] EmuWarn: CreateVertexBuffer Failed! VB Size = 0x7BDB00 Error: Desc: [0x34BC] EmuMain: Received Exception (Code := 0xC0000005) EIP := 0x04056F15(=XGetDeviceEnumerationStatus+0x3e09e32) EFL := 0x00210246 EAX := 0x00000000 EBX := 0x8059B500 ECX := 0x000034BC EDX := 0x0ABE9C80 ESI := 0x007BDB00 EDI := 0x8007000E ESP := 0x0ABE9C04 EBP := 0x0ABE9DA4 CR2 := 0x00000000 [0x34BC] EmuMain: Aborting Emulation