diff --git a/sources_snake/GeneRGB_V1.vhd b/sources_snake/GeneRGB_V1.vhd index 60b5cd3..c72613e 100644 --- a/sources_snake/GeneRGB_V1.vhd +++ b/sources_snake/GeneRGB_V1.vhd @@ -55,9 +55,9 @@ begin B<=(others=>'0'); G<=(others=>'0'); else - R<=snakeIn.R; - G<=snakeIn.G; - B<=snakeIn.B; + R<=std_logic_vector(snakeIn.R and resize(shift_right(snakeIn.A,3),5)); + G<=std_logic_vector(snakeIn.G and resize(shift_right(snakeIn.A,2),6)); + B<=std_logic_vector(snakeIn.B and resize(shift_right(snakeIn.A,3),5)); end if; end process; end Behavioral; diff --git a/sources_snake/Gene_Snake.vhd b/sources_snake/Gene_Snake.vhd index 390047e..848ff89 100644 --- a/sources_snake/Gene_Snake.vhd +++ b/sources_snake/Gene_Snake.vhd @@ -61,8 +61,8 @@ architecture Behavioral of Gene_Snake is -- D???claration des signaux signal snakeHere: std_logic; --1 si on doit afficher le pixel 0 sinon -signal dx : signed(2 downto 0); -signal dy : signed(2 downto 0); +signal dx : signed(1 downto 0); +signal dy : signed(1 downto 0); signal running : std_logic; signal startUpdate : std_logic; signal snakeColor : color; @@ -72,6 +72,9 @@ begin -- Process de calcul d'affichage process(X,Y,clk,reset,running,dx,dy,updateOrder,currentSnake,snakeHere) +variable sX : integer; --position par rapport au sprites +variable sY : integer; +variable sOff : integer; --offset dans la memoire des sprites begin if(updateOrder'event and updateOrder = '1') then --si on as un signal sur pxl_clk (i.e. on vient de changer de pixel) if(snakeHere = '1') then @@ -92,25 +95,33 @@ elsif(clk'event and clk = '1') then if(startUpdate = '1') then running <= '1'; snakeHere <= '0'; - dx <= to_signed(-1,3); - dy <= to_signed(-1,3); + dx <= to_signed(-1,2); + dy <= to_signed(-1,2); end if; if(running = '1') then if(currentSnake.isDefined = '1') then if(X>=currentSnake.X-8 and X=currentSnake.Y-8 and Y sOff := HEAD_SPRITE_OFFSET; + when to_unsigned(3,addressSize-1) => sOff := TAIL_SPRITE_OFFSET; + when others => sOff := BODY_SPRITE_OFFSET; + end case; + ROMAddress <= to_unsigned(sY*16+sX+sOff,SPRITES_ADDRESS_SIZE); end if; end if; dx <= dx + 1; if(dx = 2) then - dx <= to_signed(-1,3); + dx <= to_signed(-1,2); dy <= dy + 1; end if; if(dy = 2) then - dy <= to_signed(-1,3); + dy <= to_signed(-1,2); running <= '0'; end if; end if; diff --git a/sources_snake/types.vhd b/sources_snake/types.vhd index 473fab5..12a8907 100644 --- a/sources_snake/types.vhd +++ b/sources_snake/types.vhd @@ -6,10 +6,14 @@ package types is constant MAX_SNAKE : integer := 1200; constant SNAKE_ADDRESS_SIZE : integer :=11; - constant SPRITES_ADDRESS_SIZE : integer := 8; - constant SPRITES_DATA_LENGTH : integer := 256; + constant SPRITES_ADDRESS_SIZE : integer := 10; + constant SPRITES_DATA_LENGTH : integer := 768; constant SPRITES_DATA_SIZE : integer := 24; + constant HEAD_SPRITE_OFFSET : integer := 0; + constant BODY_SPRITE_OFFSET : integer := 256; + constant TAIL_SPRITE_OFFSET : integer := 512; + type coord is array(0 to 39, 0 to 29) of unsigned(SNAKE_ADDRESS_SIZE-1 downto 0); type pos is record X: unsigned(9 downto 0); @@ -22,9 +26,10 @@ package types is function to_pos(input : std_logic_vector) return pos; type color is record - R : STD_LOGIC_VECTOR (4 downto 0); - G : STD_LOGIC_VECTOR (5 downto 0); - B : STD_LOGIC_VECTOR (4 downto 0); + R : unsigned (4 downto 0); + G : unsigned (5 downto 0); + B : unsigned (4 downto 0); + A : unsigned (7 downto 0); end record; function to_color(input : std_logic_vector) return color; end package; @@ -57,10 +62,10 @@ package body types is function to_color(input : std_logic_vector) return color is variable sortie : color; begin - sortie.R := input(23 downto 19); - sortie.G := input(18 downto 13); - sortie.B := input(12 downto 8); - --sortie.A := input(7 downto 0); + sortie.R := unsigned(input(23 downto 19)); + sortie.G := unsigned(input(18 downto 13)); + sortie.B := unsigned(input(12 downto 8)); + sortie.A := unsigned(input(7 downto 0)); return sortie; end to_color; end package body; diff --git a/sources_snake/updateSnake.vhd b/sources_snake/updateSnake.vhd index 70e63c2..96a9502 100644 --- a/sources_snake/updateSnake.vhd +++ b/sources_snake/updateSnake.vhd @@ -73,8 +73,8 @@ begin currentSnake.X <= to_unsigned(8+(to_integer(index) rem 40)*16,10); currentSnake.Y <= to_unsigned(8+to_integer(index/40)*16,9); - currentSnake.dirX <= to_signed(to_integer(index rem 3)-1,2); - currentSnake.dirY <= to_signed(to_integer((index+1) rem 3)-1,2); + currentSnake.dirX <= to_signed(-1,2);--to_signed(to_integer(index rem 3)-1,2); + currentSnake.dirY <= to_signed(0,2);--to_signed(to_integer((index+1) rem 3)-1,2); currentSnake.isDefined <= '1'; matAddress <= to_unsigned(to_integer(index),SNAKE_ADDRESS_SIZE); diff --git a/sprites/corps2.png b/sprites/corps2.png new file mode 100644 index 0000000..4ce1259 Binary files /dev/null and b/sprites/corps2.png differ diff --git a/sprites/queue.png b/sprites/queue.png new file mode 100644 index 0000000..1811867 Binary files /dev/null and b/sprites/queue.png differ diff --git a/sprites/sprites.mem b/sprites/sprites.mem index c12d981..932733d 100644 --- a/sprites/sprites.mem +++ b/sprites/sprites.mem @@ -1,256 +1,768 @@ -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -2C23FF -2C23FF -2C23FF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -2C23FF -2C23FF -0000FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -FFFFFF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2303FF -2C23FF -2303FF -2C23FF -2C23FF -2C23FF -2C23FF -2303FF -2303FF -2303FF -A000FF -2C23FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2303FF -2C23FF -2C23FF -FFFFFF -2C23FF -2303FF -2C23FF -2C23FF -2C23FF -2303FF -2C23FF -2C23FF -2C23FF -2C23FF -2303FF -2303FF -2303FF -2C23FF -2C23FF -FFFFFF -FFFFFF -2C23FF -2C23FF -0000FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -FFFFFF -FFFFFF -FFFFFF -2C23FF -2C23FF -2C23FF -2C23FF -2C23FF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -2C23FF -2C23FF -2C23FF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF -FFFFFF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +FFC0FF +FFC0FF +4504FF +3C03FF +4504FF +000000 +000000 +000000 +000000 +4504FF +4504FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +E180FF +000000 +E180FF +4504FF +4504FF +4504FF +4504FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +E180FF +000000 +E180FF +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +FFC0FF +FFC0FF +4504FF +3C03FF +4504FF +000000 +000000 +000000 +E180FF +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +4504FF +4504FF +8323FF +8323FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +8323FF +8323FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +8323FF +8323FF +4504FF +4504FF +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +8323FF +8323FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +4504FF +4504FF +4504FF +4504FF +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 +000000 diff --git a/sprites/tete2.png b/sprites/tete2.png new file mode 100644 index 0000000..90685f4 Binary files /dev/null and b/sprites/tete2.png differ