Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Desired start location of drawn sprite
- logic [9:0] Pac_X_OGstart = 10'd288; // Center position on the X axis
- logic [9:0] Pac_Y_OGstart = 10'd300;//131;
- logic [9:0] Pac_X_start = 10'd288; // Center position on the X axis
- logic [9:0] Pac_Y_start = 10'd300;//131; // Center position on the Y axis
- //Pac to the right
- parameter [9:0] Pac_X_openMouthRight = 10'd21;
- parameter [9:0] Pac_Y_openMouthRight = 10'd90;
- parameter [9:0] Pac_X_openWideMouthRight = 10'd36; // offset horizontal
- parameter [9:0] Pac_Y_openWideMouthRight = 10'd90; // offset vertical
- //Pac to the left
- parameter [9:0] Pac_X_openMouthLeft = 10'd52;
- parameter [9:0] Pac_Y_openMouthLeft = 10'd90;
- parameter [9:0] Pac_X_openWideMouthLeft = 10'd68; // offset horizontal
- parameter [9:0] Pac_Y_openWideMouthLeft = 10'd90;
- //Pac to UP
- parameter [9:0] Pac_X_openMouthUp = 10'd83;
- parameter [9:0] Pac_Y_openMouthUp = 10'd92;
- parameter [9:0] Pac_X_openWideMouthUp = 10'd100; // offset horizontal
- parameter [9:0] Pac_Y_openWideMouthUp = 10'd95; // offset vertical
- //Pac to Down
- parameter [9:0] Pac_X_openMouthDown = 10'd117;
- parameter [9:0] Pac_Y_openMouthDown = 10'd92;
- parameter [9:0] Pac_X_openWideMouthDown = 10'd134; // offset horizontal
- parameter [9:0] Pac_Y_openWideMouthDown = 10'd95;
- //Closed Used by Everyone
- parameter [9:0] Pac_X_closed = 10'd4; // offset horizontal
- parameter [9:0] Pac_Y_closed = 10'd90; // offset vertical
- //For Right
- logic [9:0] new_x_openMouthRight; // offset horizontal
- logic [9:0] new_y_openMouthRight; // offset vertical
- logic [9:0] new_x_openWideMouthRight; // offset horizontal
- logic [9:0] new_y_openWideMouthRight; // offset vertical
- //For Left
- logic [9:0] new_x_openMouthLeft; // offset horizontal
- logic [9:0] new_y_openMouthLeft; // offset vertical
- logic [9:0] new_x_openWideMouthLeft; // offset horizontal
- logic [9:0] new_y_openWideMouthLeft; // offset vertical
- //For Up
- logic [9:0] new_x_openMouthUp; // offset horizontal
- logic [9:0] new_y_openMouthUp; // offset vertical
- logic [9:0] new_x_openWideMouthUp; // offset horizontal
- logic [9:0] new_y_openWideMouthUp; // offset vertical
- //For Down
- logic [9:0] new_x_openMouthDown; // offset horizontal
- logic [9:0] new_y_openMouthDown; // offset vertical
- logic [9:0] new_x_openWideMouthDown; // offset horizontal
- logic [9:0] new_y_openWideMouthDown; // offset vertical
- //For Everyone
- logic [9:0] new_x_closed; // offset horizontal
- logic [9:0] new_y_closed; // offset vertical
- parameter [9:0] Pac_X_Min = 10'd0; // Leftmost point on the X axis
- parameter [9:0] Pac_X_Max = 10'd639; // Rightmost point on the X axis
- parameter [9:0] Pac_Y_Min = 10'd0; // Topmost point on the Y axis
- parameter [9:0] Pac_Y_Max = 10'd479; // Bottommost point on the Y axis
- parameter [9:0] Pac_X_Step = 10'd1; // Step size on the X axis
- parameter [9:0] Pac_Y_Step = 10'd1; // Step size on the Y axis
- parameter [9:0] LeftTunnel_X = 10'd202;
- parameter [9:0] LeftTunnel_Y = 10'd114;
- parameter [9:0] RightTunnel_X = 10'd372;
- parameter [9:0] RightTunnel_Y = 10'd114;
- logic [6:0] flash_counter = 7'b0000000;
- logic [6:0] counter_TOTAL = 7'b1111111;
- ///Update going right
- logic [18:0] openMouthRight;
- logic [18:0] openWideMouthRight;
- logic [18:0] closed;
- assign new_x_openMouthRight = DrawX - Pac_X_start + Pac_X_openMouthRight;
- assign new_y_openMouthRight = DrawY - Pac_Y_start + Pac_Y_openMouthRight;
- assign new_x_openWideMouthRight = DrawX - Pac_X_start + Pac_X_openWideMouthRight;
- assign new_y_openWideMouthRight = DrawY - Pac_Y_start + Pac_Y_openWideMouthRight;
- ///Update going left
- logic [18:0] openMouthLeft;
- logic [18:0] openWideMouthLeft;
- assign new_x_openMouthLeft = DrawX - Pac_X_start + Pac_X_openMouthLeft;
- assign new_y_openMouthLeft = DrawY - Pac_Y_start + Pac_Y_openMouthLeft;
- assign new_x_openWideMouthLeft = DrawX - Pac_X_start + Pac_X_openWideMouthLeft;
- assign new_y_openWideMouthLeft = DrawY - Pac_Y_start + Pac_Y_openWideMouthLeft;
- ///Update going Up
- logic [18:0] openMouthUp;
- logic [18:0] openWideMouthUp;
- assign new_x_openMouthUp = DrawX - Pac_X_start + Pac_X_openMouthUp;
- assign new_y_openMouthUp = DrawY - Pac_Y_start + Pac_Y_openMouthUp;
- assign new_x_openWideMouthUp = DrawX - Pac_X_start + Pac_X_openWideMouthUp;
- assign new_y_openWideMouthUp = DrawY - Pac_Y_start + Pac_Y_openWideMouthUp;
- ///Update going Down
- logic [18:0] openMouthDown;
- logic [18:0] openWideMouthDown;
- assign new_x_openMouthDown = DrawX - Pac_X_start + Pac_X_openMouthDown;
- assign new_y_openMouthDown = DrawY - Pac_Y_start + Pac_Y_openMouthDown;
- assign new_x_openWideMouthDown = DrawX - Pac_X_start + Pac_X_openWideMouthDown;
- assign new_y_openWideMouthDown = DrawY - Pac_Y_start + Pac_Y_openWideMouthDown;
- //Right Addresses
- assign openMouthRight = (new_y_openMouthRight * 538) + new_x_openMouthRight;
- assign openWideMouthRight = (new_y_openWideMouthRight * 538) + new_x_openWideMouthRight;
- //Left Addresses
- assign openMouthLeft = (new_y_openMouthLeft * 538) + new_x_openMouthLeft;
- assign openWideMouthLeft = (new_y_openWideMouthLeft * 538) + new_x_openWideMouthLeft;
- //Up Addresses
- assign openMouthUp = (new_y_openMouthUp * 538) + new_x_openMouthUp;
- assign openWideMouthUp = (new_y_openWideMouthUp * 538) + new_x_openWideMouthUp;
- //Down Addresses
- assign openMouthDown = (new_y_openMouthDown * 538) + new_x_openMouthDown;
- assign openWideMouthDown = (new_y_openWideMouthDown * 538) + new_x_openWideMouthDown;
- //Closed Address
- assign new_x_closed = (DrawX - Pac_X_start) + Pac_X_closed;
- assign new_y_closed = (DrawY - Pac_Y_start) + Pac_Y_closed;
- assign closed = (new_y_closed * 538) + new_x_closed;
- always_ff @ (posedge frame_clk)
- begin
- flash_counter <= flash_counter + 1'b1;
- if(flash_counter == counter_TOTAL)
- begin
- flash_counter <= 0;
- end
- end
- logic dead, dead_in;
- always_comb
- begin
- if(dead == 1'b1)
- begin
- if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) )
- address = closed; //closed
- else
- address = 19'b0;
- end
- else if(currDirec_in == 4'b0000)
- begin
- if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) )
- address = closed; //closed
- else
- address = 19'd0;
- end
- else if(currDirec == 4'b0010)
- begin
- if( (DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b0101001 ) )
- address = openWideMouthRight; //wide open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b1010010 ))
- address = openMouthRight; //open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter > 7'b1010010 ))
- address = closed; //closed
- else
- address = 19'd0;
- end
- else if(currDirec == 4'b1000)
- begin
- if( (DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b0101001 ) )
- address = openWideMouthLeft; //wide open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b1010010 ))
- address = openMouthLeft; //open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter > 7'b1010010 ))
- address = closed; //closed
- else
- address = 19'd0;
- end
- else if(currDirec == 4'b0001)
- begin
- if( (DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b0101001 ) )
- address = openWideMouthDown; //wide open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b1010010 ))
- address = openMouthDown; //open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter > 7'b1010010 ))
- address = closed; //closed
- else
- address = 19'd0;
- end
- //
- else if(currDirec == 4'b0100)
- begin
- if( (DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b0101001 ) )
- address = openWideMouthUp; //wide open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter < 7'b1010010 ))
- address = openMouthUp; //open mouth
- else if((DrawX >= Pac_X_start) && (DrawX <= Pac_X_start + 13) && (DrawY >= Pac_Y_start) && (DrawY <= Pac_Y_start+13) && (flash_counter > 7'b1010010 ))
- address = closed; //closed
- else
- address = 19'd0;
- end
- else
- address = 19'd0;
- end
- parameter [9:0] Pac_X_map = 10'd202;
- parameter [9:0] Pac_Y_map = 10'd4;
- logic [9:0] new_x_to_right; // offset horizontal
- logic [9:0] new_y_to_right; // o
- logic [18:0] checkWallRight;
- assign new_x_to_right = (DrawX - Pac_X_start + 14) - Pac_X_map;
- assign new_y_to_right = (DrawY - Pac_Y_start) - Pac_Y_map;
- assign checkWallRight = (new_y_to_right * 184) + new_x_to_right;
- logic [9:0] new_x_to_left; // offset horizontal
- logic [9:0] new_y_to_left; // o
- logic [18:0] checkWallLeft;
- assign new_x_to_left = (DrawX - Pac_X_start - 1 - Pac_X_map);
- assign new_y_to_left = (DrawY - Pac_Y_start - Pac_Y_map) ;
- assign checkWallLeft = (new_y_to_left * 184) + new_x_to_left;
- logic [9:0] new_x_to_up; // offset horizontal
- logic [9:0] new_y_to_up; // o
- logic [18:0] checkWallUp;
- assign new_x_to_up = (DrawX - Pac_X_start) + Pac_X_map ;
- assign new_y_to_up = (DrawY - Pac_Y_start -1) + Pac_Y_map ;
- assign checkWallUp = (new_y_to_up * 184) + new_x_to_up;
- logic [9:0] new_x_to_down; // offset horizontal
- logic [9:0] new_y_to_down; // o
- logic [18:0] checkWallDown;
- assign new_x_to_down = (DrawX - Pac_X_start) ;
- assign new_y_to_down = (DrawY - Pac_Y_start + 14);
- assign checkWallDown = (new_y_to_down * 184) + new_x_to_down;
- //
- // //////// Do not modify the always_ff blocks. ////////
- // Detect rising edge of frame_clk
- logic frame_clk_delayed, frame_clk_rising_edge;
- always_ff @ (posedge Clk) begin
- frame_clk_delayed <= frame_clk;
- frame_clk_rising_edge <= (frame_clk == 1'b1) && (frame_clk_delayed == 1'b0);
- end
- logic [9:0] Pac_Y_start_in;
- logic [9:0] Pac_X_start_in;
- logic [3:0] currDirec;
- logic [3:0] currDirec_in;
- // logic [3:0] currDirec_prev;
- // Update registers
- always_ff @ (posedge Clk)
- begin
- if (Reset)
- begin
- Pac_X_start <= Pac_X_OGstart;
- Pac_Y_start <= Pac_Y_OGstart;
- dead <= 1'b0;
- currDirec <= 4'b0000;
- end
- else
- begin
- Pac_Y_start <= Pac_Y_start_in;
- Pac_X_start <= Pac_X_start_in;
- //currDirec_prev <= currDirec;
- currDirec <= currDirec_in;
- dead <= dead_in;
- end
- end
- //////// Do not modify the always_ff blocks. ////////
- // You need to modify always_comb block.
- always_comb
- begin
- // By default, keep motion and position unchanged
- Pac_Y_start_in = Pac_Y_start;
- Pac_X_start_in = Pac_X_start;
- currDirec_in = currDirec;
- dead_in = dead;
- // Update position and motion only at rising edge of frame clock
- if (frame_clk_rising_edge)
- begin
- unique case(SW)
- 8'h1A: // w (up)
- begin
- currDirec_in = 4'b0100;
- // if( mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 )] != 2'd0) //&&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 1)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 2)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 3)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 4)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 5)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 6)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 7)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 8)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 9)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 10)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 11)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 12)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 13)] != 2'd0)
- // begin
- // currDirec_in = 4'b0100;
- // end
- // else
- // begin
- // dead_in = dead;
- // Pac_Y_start_in = Pac_Y_start;
- // currDirec_in = currDirec;
- // end
- end
- 8'h07://right
- begin
- currDirec_in = 4'b0010;
- // if((mem_out[(((Pac_Y_start - 4 ) * 184) + (Pac_X_start - 202 + 14))] != 2'd0)) //&&
- //// (mem_out[(((Pac_Y_start - 4 + 1) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 2) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 3) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 4) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 5) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 6) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 7) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 8) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 9) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- //// (mem_out[(((Pac_Y_start - 4 + 10) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 ) &&
- //// (mem_out[(((Pac_Y_start - 4 + 11) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 ) &&
- //// (mem_out[(((Pac_Y_start - 4 + 12) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 ) &&
- //// (mem_out[(((Pac_Y_start - 4 + 13) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 ))
- // begin
- // currDirec_in = 4'b0010;
- // end
- // else
- // begin
- // dead_in = dead;
- // Pac_Y_start_in = Pac_Y_start;
- // currDirec_in = currDirec;
- // end
- end
- 8'h16://down
- begin
- currDirec_in = 4'b0001;
- // if(mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 )] != 2'd0 )//&&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 1)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 2)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 3)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 4)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 5)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 6)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 7)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 8)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 9)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 10)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 11)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 12)] != 2'd0 &&
- //// mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 13)] != 2'd0)
- // begin
- // currDirec_in = 4'b0001;
- // end
- // else
- // begin
- // dead_in = dead;
- // Pac_Y_start_in = Pac_Y_start;
- // currDirec_in = currDirec;
- // end
- end
- 8'h04://left
- begin
- currDirec_in = 4'b1000;
- // if( mem_out[((Pac_Y_start - 4 ) * 184) + (Pac_X_start - 202 - 1)] != 2'd0) //&&
- //// mem_out[((Pac_Y_start - 4 + 1) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 2) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 3) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 4) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 5) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 6) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 7) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 8) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 9) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 10) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 11) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 12) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- //// mem_out[((Pac_Y_start - 4 + 13) * 184) + (Pac_X_start - 202 - 1)] != 2'd0)
- // begin
- // currDirec_in = 4'b1000;
- // end
- // else
- // begin
- // dead_in = dead;
- // Pac_Y_start_in = Pac_Y_start;
- // currDirec_in = currDirec;
- // end
- end
- default:
- begin
- dead_in = dead;
- Pac_Y_start_in = Pac_Y_start;
- currDirec_in = currDirec;
- end
- endcase
- if(currDirec == 4'b0100)
- begin
- if( mem_out[checkWallUp] != 2'd0)// mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 )] != 2'd0) //&&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 1)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 2)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 3)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 4)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 5)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 6)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 7)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 8)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 9)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 10)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 11)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 12)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 - 1) * 184) + Pac_X_start - 202 + 13)] != 2'd0) //Pac_Y_start - 1 > Pac_Y_Min)
- begin
- Pac_Y_start_in = Pac_Y_start - 1;
- end
- else
- currDirec_in = 4'b0000;
- end
- else if(currDirec == 4'b0010)
- begin
- if( mem_out[checkWallRight] != 2'd0)//mem_out[checkWallRight] != 2'd0)//(mem_out[(((Pac_Y_start - 4 ) * 184) + (Pac_X_start - 202 + 14))] != 2'd0)) //&&
- // (mem_out[(((Pac_Y_start - 4 + 1) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 2) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 3) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 4) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 5) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 6) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 7) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 8) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 9) * 184) + (Pac_X_start - 202 + 14))] != 2'd0) &&
- // (mem_out[(((Pac_Y_start - 4 + 10) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 )&&
- // (mem_out[(((Pac_Y_start - 4 + 11) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 )&&
- // (mem_out[(((Pac_Y_start - 4 + 12) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 )&&
- // (mem_out[(((Pac_Y_start - 4 + 13) * 184) + (Pac_X_start - 202 + 14))] != 2'd0 )) //((Pac_X_start + 14) + 1) < Pac_X_Max)
- begin
- Pac_X_start_in = Pac_X_start + 1;
- if((Pac_X_start == RightTunnel_X) && (RightTunnel_Y <= Pac_Y_start) && (Pac_Y_start <= RightTunnel_Y + 16))
- begin
- Pac_X_start_in = LeftTunnel_X;
- currDirec_in = 4'b0010;
- end
- end
- else
- currDirec_in = 4'b0000;
- end
- else if(currDirec == 4'b0001)
- begin
- if(mem_out[checkWallDown] != 2'd0)//mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 )] != 2'd0) // &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 1)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 2)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 3)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 4)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 5)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 6)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 7)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 8)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 9)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 10)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 11)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 12)] != 2'd0 &&
- // mem_out[(((Pac_Y_start - 4 + 14) * 184) + Pac_X_start - 202 + 13)] != 2'd0 ) //((Pac_Y_start + 21) + 1) < Pac_Y_Max)
- begin
- Pac_Y_start_in = Pac_Y_start + 1;
- end
- else
- currDirec_in = 4'b0000;
- end
- else if(currDirec == 4'b1000)
- begin
- if(mem_out[checkWallLeft] != 2'd0 )//mem_out[((Pac_Y_start - 4 ) * 184) + (Pac_X_start - 202 - 1)] != 2'd0) // &&
- // mem_out[((Pac_Y_start - 4 + 1) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 2) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 3) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 4) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 5) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 6) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 7) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 8) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 9) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 10) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 11) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 12) * 184) + (Pac_X_start - 202 - 1)] != 2'd0 &&
- // mem_out[((Pac_Y_start - 4 + 13) * 184) + (Pac_X_start - 202 - 1)] != 2'd0) //Pac_X_start - 1 > Pac_X_Min)
- begin
- Pac_X_start_in = Pac_X_start - 1;
- if((Pac_X_start == LeftTunnel_X) && (LeftTunnel_Y <= Pac_Y_start) && (Pac_Y_start <= LeftTunnel_Y + 16))
- begin
- Pac_X_start_in = RightTunnel_X - 14;
- currDirec_in = 4'b1000;
- end
- end
- else
- currDirec_in = 4'b0000;
- end
- ///
- if( (PinkGhost_X_in - 14 <= Pac_X_start) && (Pac_X_start <= PinkGhost_X_in + 14) &&
- (PinkGhost_Y_in - 14 <= Pac_Y_start) && (Pac_Y_start <= PinkGhost_Y_in + 14) )
- begin
- dead_in = 1'b1;
- end
- ///
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement