From 6a4219d3733c613b12e973244d84f2fe7181dbff Mon Sep 17 00:00:00 2001 From: Kieran Klukas Date: Wed, 25 Mar 2026 16:14:48 -0400 Subject: [PATCH] bug: vector overflow on width --- physics_engine.vhd | 9 +++++---- visualizer.py | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/physics_engine.vhd b/physics_engine.vhd index a1d75b6..a96e367 100644 --- a/physics_engine.vhd +++ b/physics_engine.vhd @@ -192,8 +192,9 @@ begin end if; -- == LEFT WALL == - if px(9) = '1' or px <= LEFT_WALL then - px := LEFT_WALL; + -- Detect underflow: moving left (vx negative) but px wrapped to > pos_x + if (vx(9) = '1' and px > pos_x) or px <= LEFT_WALL + SIZE then + px := LEFT_WALL + SIZE; bounced := '1'; bounce_wall := '1'; bounce_speed := (not vx) + 1; vx := (not vx) + 1; @@ -203,8 +204,8 @@ begin end if; -- == RIGHT WALL == - if px >= RIGHT_WALL then - px := RIGHT_WALL; + if px >= RIGHT_WALL - SIZE then + px := RIGHT_WALL - SIZE; bounced := '1'; bounce_wall := '1'; bounce_speed := vx; vx := (not vx) + 1; diff --git a/visualizer.py b/visualizer.py index 25a4b4f..e8d31e5 100644 --- a/visualizer.py +++ b/visualizer.py @@ -32,7 +32,7 @@ BOUNCE_SHIFT = 3 # energy loss = vel >> 3 (keep 87.5%) GROUND = 440 CEILING = 16 LEFT_WALL = 8 -RIGHT_WALL = 620 +RIGHT_WALL = 631 GROUND_TOP = 448 CEIL_BOT = 8 @@ -215,8 +215,8 @@ def main(): vy = to_unsigned(svy) # --- Left wall bounce --- - if px <= LEFT_WALL: - px = LEFT_WALL + if px <= LEFT_WALL + SIZE: + px = LEFT_WALL + SIZE bounced = True; bounce_wall = True bounce_speed = abs(to_signed(vx)) vx = negate(vx) @@ -226,8 +226,8 @@ def main(): vx = to_unsigned(svx) # --- Right wall bounce --- - if px >= RIGHT_WALL: - px = RIGHT_WALL + if px >= RIGHT_WALL - SIZE: + px = RIGHT_WALL - SIZE bounced = True; bounce_wall = True bounce_speed = abs(to_signed(vx)) vx = negate(vx) -- 2.51.2