diff --git a/behavioural/razzle.sv b/behavioural/razzle.sv
index 17bec70ec6ed7fa0997a4181d1d38661f6592e13..03ab0d5951b31562ee1f466d016213407a125af3 100644
--- a/behavioural/razzle.sv
+++ b/behavioural/razzle.sv
@@ -1,178 +1,31 @@
-// Description:
-// This code generates a VGA output for ARM SoC based on razzle code modified by Iain Mcnally
-//
-// Maintainer: Karthik Sathyanarayanan <ks6n19@soton.ac.uk>
-// Revision : $Revision$
+module razzle (
 
- 
-module razzle ( 
- 
-		input logic CLOCK_50, 
-		input logic [3:0] KEY,
-		input logic [10:0] x1, x2, y1, y2,
-    	output logic [7:0] VGA_R,VGA_G,VGA_B, 
-    	output logic VGA_HS,VGA_VS, VGA_CLK, VGA_BLANK_N); 
-       		 
-// Video Display Signals    
-logic [10:0] H_count,V_count; 
-
-logic Red_Data; 
-logic red_square ;
-logic video_on, video_on_H, video_on_V, clock_enable; 
-
-
-
-// Map internal signals to external busses
+        input logic CLOCK_50,
+        input logic [3:0] KEY,
+        input logic [10:0] x1, x2, y1, y2,
+        output logic [9:0] LEDR ;
+)
 
 logic nReset;
-logic Red,Green,Blue; 
+logic [9:0] L1_detT ;
+logic [9:0] L2_detT ;
+logic [9:0] detT ;
+logic [9:0] L1_positive;
+logic [9:0] L2_positive,
+logic [9:0] L3_positive ;
 
 assign nReset=KEY[2]; // Keys are active low?
 
-assign VGA_R = Red ? 255 : 0;
-assign VGA_G = Green ? 255 : 0;
-assign VGA_B = Blue ? 255 : 0;
-
-assign VGA_CLK = clock_enable;
-assign VGA_BLANK_N = video_on;
-
-
-// Colors for pixel data on video signal 
-assign Red_Data = red_square ; 
-assign Green_Data = 0; 
-assign Blue_Data = 0; 
-
-// turn off color (black) at screen edges and during retrace with video_on 
-assign Red =   Red_Data && video_on; 
-assign Green = Green_Data && video_on; 
-assign Blue =  Blue_Data && video_on; 
-
-// video_on turns off pixel color data when not in the pixel view area 
-assign video_on = video_on_H && video_on_V; 
-
-// Red square calculation
-
-always @(posedge CLOCK_50, negedge nReset)
-<<<<<<< HEAD
-  if ( ! nReset)
-    begin
-      red_square = 0;
-    end
-  else
-    begin : FRACTAL_COMPUTE 
-      if ( video_on )
-	begin
-	
-	  if (( y1 < V_count) && ( V_count < y2 ))
-			if ((  x1 < H_count) && ( H_count  < x2 ))
-				red_square = 1 ; 
-			else 
-				red_square = 0 ; 	
-	  else 
-		 red_square = 0 ;
-
-
-
-	end
-    end : FRACTAL_COMPUTE
-=======
-	if ( ! nReset)
-		begin
-			red_square = 0;
-		end
-	else
-		begin : FRACTAL_COMPUTE 
-		if ( video_on )
-		begin
-			if ( y1 < V_count < y2 )
-				if (  x2 < H_count < x1 )
-					red_square = 0 ; 
-				else 
-	    			red_square = 1 ; 	
-		end
-    	end : FRACTAL_COMPUTE
->>>>>>> 52fff8ef4ad788ad3296edfd3018c758821a3033
-     
-// Generate Horizontal and Vertical Timing Signals for Video Signal 
-//VIDEO_DISPLAY 
-
-always @(posedge CLOCK_50, negedge nReset)
-  if ( ! nReset) 
-    begin
-		clock_enable = 0; 
-		H_count = 0; 
-		V_count = 0; 
-		video_on_H = 0; 
-		video_on_V = 0; 
-    end
-	
-	else
-	begin : VIDEO_DISPLAY
-      // Clock enable used for a 24Mhz video clock rate 
-      // 640 by 480 display mode needs close to a 25Mhz pixel clock 
-      // 24Mhz should work on most new monitors 
-
-      clock_enable = ! clock_enable; 
-
-      // H_count counts pixels (640 + extra time for sync signals) 
-      // 
-      //   <-Clock out RGB Pixel Row Data ->   <-H Sync-> 
-      //   ------------------------------------__________-------- 
-      //   0                           640   659       755    799 
-      // 
-
-		if ( clock_enable )
-		begin 
-			if (H_count >= 799)
-				H_count = 0; 
-			else 
-				H_count = H_count + 1; 
-
-	  // Generate Horizontal Sync Signal 
-		if ((H_count <= 755) && (H_count >= 659))
-	     VGA_HS = 0; 
-		else 
-	     VGA_HS = 1; 
-
-	  // V_count counts rows of pixels (480 + extra time for sync signals) 
-	  // 
-	  //  <---- 480 Horizontal Syncs (pixel rows) -->  ->V Sync<- 
-	  //  -----------------------------------------------_______------------ 
-	  //  0                                       480    493-494          524 
-	  // 
-		if ((V_count >= 524) && (H_count >= 699))
-			V_count = 0; 
-		else if (H_count == 699)
-			V_count = V_count + 1; 
-
-
-	  // Generate Vertical Sync Signal 
-		if ((V_count <= 494) && (V_count >= 493))
-			VGA_VS = 0; 
-		else 
-			VGA_VS = 1; 
-
-
-	  // Generate Video on Screen Signals for Pixel Data 
-		if (H_count <= 639) 
-			video_on_H = 1; 
-		else 
-			video_on_H = 0; 
-
-
-		if (V_count <= 479)
-			video_on_V = 1; 
-		else 
-			video_on_V = 0; 
-
-	end 
-
-	end : VIDEO_DISPLAY
+always_comb
 
+          L1_detT   =   ((y2-y3) *  (x-x3)) + ((x3-x2) *  (y-y3)) ;
+          L2_detT   =   ((y3-y1) *  (x-x3)) + ((x1-x3) *  (y-y3)) ;
+          detT      =   ((y2-y3) * (x1-x3)) + ((x3-x2) * (y1-y3)) ;
+          L1_positive = ((L1_detT >= 0) == (detT >= 0)) ;
+          L2_positive = ((L2_detT >= 0) == (detT >= 0)) ;
+          L3_positive = (((L1_detT + L2_detT) <= detT) == (detT >= 0)) ;
+          if(L1_positive && L2_positive && L3_positive)
+                write_pix(x,y,1);
 
 
 endmodule
- 
- 
-
-