From c2d9da5443517f76eaa8693e240f1072c464f912 Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 22 Dec 2021 18:56:52 +0100 Subject: [PATCH] =?UTF-8?q?fix=C3=A9=20qqu=20bugs=20sur=20la=20rotation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources_snake/GeneRGB_V1.vhd | 6 +- sources_snake/Gene_Snake.vhd | 25 +- sources_snake/types.vhd | 23 +- sources_snake/updateSnake.vhd | 4 +- sprites/corps2.png | Bin 0 -> 192 bytes sprites/queue.png | Bin 0 -> 162 bytes sprites/sprites.mem | 1024 ++++++++++++++++++++++++--------- sprites/tete2.png | Bin 0 -> 252 bytes 8 files changed, 805 insertions(+), 277 deletions(-) create mode 100644 sprites/corps2.png create mode 100644 sprites/queue.png create mode 100644 sprites/tete2.png 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 0000000000000000000000000000000000000000..4ce1259b54b8f1335f11988f194b0e6d7a4c44b2 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F3${@^GvDCf{C|Km_ z;uvDlo17r=>p<cj^cIKHrgZ;M|Vro+VMoZcI@6KEJWC@!<|x_BOT@=82}! za=#eE4>##_Y}D z;uvDlo17r=sbOMF@4N0R|0d@!_z0iWbGV*S`GS4US(m=GE;||KujK)P<8Lh_Kp?_n zBX6X#pSVCW2QxGC;d48pdm?xhQWSh1Yb;P=V8}l%mAJUGTMuYHgQu&X%Q~loCIEe| BFKYk* literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..90685f4addd80d24f66fcabe497590a694a779a2 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F3${@^GvDCf{D7enk z#WBR9_v|D^u|oy|F6oP3eGuhvsZn8zUKbF2)X~D5H#|d^EmA&EGG2UpXr=yzw?gcT zKb3u+d@`kRf9U0Cy_@d7`IT>MGC!o-PxovnTYPQt@3$uyKI{sKf9vJv6E$akAv4d~ z;}@zJ4j8## literal 0 HcmV?d00001