;//================================================================== ;//================================================================== ;//== == ;//== -PSX2- MULTIPASS - CLIPPED - PARALLEL - TRIANGLES == ;//== == ;//== Feature : - Finalize vertices with screen projection. == ;//== - Generate stqs and integer rgba. == ;//== - Performs fog calculation for free. == ;//== - Support 24 bits and 16 bits Zbuffers. == ;//== == ;//== -CHECKED- == ;//== == ;//================================================================== ;//================================================================== ;---------------------------------------------------------------------------- ADDAx.xyzw ACC, VF02, VF00 LQ.zw VF23, vuSDxMaxyMax(VI00) ; Build Offset - Load fog scale / plan NOP LQ.xyzw VF03, (0+0*vertexSize)(VI01) ; - Load position-1 NOP LQ.xyzw VF07, (1+0*vertexSize)(VI01) ; - Load uv-1 NOP LQ.xyzw VF11, (2+0*vertexSize)(VI01) ; - Load rgba-1 MSUBAz.w ACC, VF23, VF23 LQ.xyzw VF04, (0+1*vertexSize)(VI01) ; Prepare fog - Load position-2 MADDz.w VF03, VF03, VF23 LQ.xyzw VF08, (1+1*vertexSize)(VI01) ; Build fog-1 - Load uv-2 MADDw.xyz VF03, VF03, VF00 LQ.xyzw VF12, (2+1*vertexSize)(VI01) ; Project pos-1 - Load rgba-2 NOP LOI 255.0 ; - Fog maxi clamp value NOP ISW.x VI09, 0(VI14) ; - Store Tag number of vertices MINIi.w VF03, VF03, I IADDIU VI05, VI14, 1 ; Clamp fog-1 - Output buffer adress NOP IADDIU VI06, VI01, 0 ; - Input buffer adress ADDw.z VF07, VF00, VF00 IADDIU VI04, VI12, 1 ; Build stq-1 - Output buffer second pass MADDz.w VF04, VF04, VF23 NOP ; Build fog-2 MAX.w VF03, VF03, VF02 NOP ; Clamp fog-1 MADDw.xyz VF04, VF04, VF00 SQ.yzw VF01, 0(VI14) ; Project pos-2 - Store Gif Tag MPClipParloop:;------------------------------------------------------------------ FTOI0.xyzw VF11, VF11 LQ.xyzw VF05, (0+2*vertexSize)(VI06) ; Int rgba-1 - Load position-3 MINIi.w VF04, VF04, I LQ.xyzw VF09, (1+2*vertexSize)(VI06) ; Clamp fog-2 - Load uv-3 FTOI4.xyzw VF03, VF03 LQ.xyzw VF13, (2+2*vertexSize)(VI06) ; Convert pos-1 - Load rgba-3 ADDw.z VF08, VF00, VF00 SQI.xyzw VF07, (VI05++) ; Build stq-2 - Store stq-1 MADDz.w VF05, VF05, VF23 SQI.xyzw VF11, (VI05++) ; Build fog-3 - Store rgba-1 NOP IADDIU VI06, VI06, vertexSize ; Calc fog-2 - Increment input buffer adress NOP SQ.xyzw VF11, (1+0*OutverSize)(VI04) ; - Store second-pass rgba-1 NOP SQ.xyzw VF03, (2+0*OutverSize)(VI04) ; - Store second-pass position-1 MAX.w VF04, VF04, VF02 IBEQ VI06, VI07, MPClipParEnd ; Clamp fog-2 - End test MADDw.xyz VF05, VF05, VF00 SQI.xyzw VF03, (VI05++) ; Project pos-3 - Store position-1 FTOI0.xyzw VF12, VF12 LQ.xyzw VF06, (0+2*vertexSize)(VI06) ; Int rgba-2 - Load position-4 MINIi.w VF05, VF05, I LQ.xyzw VF10, (1+2*vertexSize)(VI06) ; Clamp fog-3 - Load uv-4 FTOI4.xyzw VF04, VF04 LQ.xyzw VF14, (2+2*vertexSize)(VI06) ; Convert pos-2 - Load rgba-4 ADDw.z VF09, VF00, VF00 SQI.xyzw VF08, (VI05++) ; Build stq-3 - Store stq-2 MADDz.w VF06, VF06, VF23 SQI.xyzw VF12, (VI05++) ; Build fog-4 - Store rgba-2 NOP IADDIU VI06, VI06, vertexSize ; Calc fog-2 - Increment input buffer adress NOP SQ.xyzw VF12, (1+1*OutverSize)(VI04) ; - Store second-pass rgba-2 NOP SQ.xyzw VF04, (2+1*OutverSize)(VI04) ; - Store second-pass position-2 MAX.w VF05, VF05, VF02 IBEQ VI06, VI07, MPClipParEnd ; Clamp fog-3 - End test MADDw.xyz VF06, VF06, VF00 SQI.xyzw VF04, (VI05++) ; Project pos-4 - Store position-2 FTOI0.xyzw VF13, VF13 LQ.xyzw VF03, (0+2*vertexSize)(VI06) ; Int rgba-3 - Load position-1 MINIi.w VF06, VF06, I LQ.xyzw VF07, (1+2*vertexSize)(VI06) ; Clamp fog-4 - Load uv-1 FTOI4.xyzw VF05, VF05 LQ.xyzw VF11, (2+2*vertexSize)(VI06) ; Convert pos-3 - Load rgba-1 ADDw.z VF10, VF00, VF00 SQI.xyzw VF09, (VI05++) ; Build stq-4 - Store stq-3 MADDz.w VF03, VF03, VF23 SQI.xyzw VF13, (VI05++) ; Build fog-1 - Store rgba-3 NOP IADDIU VI06, VI06, vertexSize ; Calc fog-2 - Increment input buffer adress NOP SQ.xyzw VF13, (1+2*OutverSize)(VI04) ; - Store second-pass rgba-3 NOP SQ.xyzw VF05, (2+2*OutverSize)(VI04) ; - Store second-pass position-3 MAX.w VF06, VF06, VF02 IBEQ VI06, VI07, MPClipParEnd ; Clamp fog-4 - End test MADDw.xyz VF03, VF03, VF00 SQI.xyzw VF05, (VI05++) ; Project pos-1 - Store position-3 FTOI0.xyzw VF14, VF14 LQ.xyzw VF04, (0+2*vertexSize)(VI06) ; Int rgba-4 - Load position-2 MINIi.w VF03, VF03, I LQ.xyzw VF08, (1+2*vertexSize)(VI06) ; Clamp fog-1 - Load uv-2 FTOI4.xyzw VF06, VF06 LQ.xyzw VF12, (2+2*vertexSize)(VI06) ; Convert pos-4 - Load rgba-2 ADDw.z VF07, VF00, VF00 SQI.xyzw VF10, (VI05++) ; Build stq-1 - Store stq-4 MADDz.w VF04, VF04, VF23 SQI.xyzw VF14, (VI05++) ; Build fog-2 - Store rgba-4 NOP IADDIU VI06, VI06, vertexSize ; Calc fog-2 - Increment input buffer adress NOP SQ.xyzw VF14, (1+3*OutverSize)(VI04) ; - Store second-pass rgba-4 NOP SQ.xyzw VF06, (2+3*OutverSize)(VI04) ; - Store second-pass position-4 NOP IADDIU VI04, VI04, (4*OutverSize) ; - Increment second pass output buffer MAX.w VF03, VF03, VF02 IBNE VI06, VI07, MPClipParloop ; Clamp fog-1 - End test MADDw.xyz VF04, VF04, VF00 SQI.xyzw VF06, (VI05++) ; Project pos-2 - Store position-4 MPClipParEnd:;------------------------------------------------------------------- ;//================================================================================================================ ;//======================================== ======================================================= ;//==================== THE END ========================= ;//======================================== ======================================================= ;//============================================================================================= JCL Janvier 2001 =