rectangle: wip optimizing rectangle point test
authorLukas Krickl <lukas@krickl.dev>
Wed, 1 Oct 2025 15:24:49 +0000 (17:24 +0200)
committerLukas Krickl <lukas@krickl.dev>
Wed, 1 Oct 2025 15:24:49 +0000 (17:24 +0200)
src/rectangle.s

index be8db69b3d2b8c2246df454275453296ebf85bcf..528c1cb604ca942f6747867433ecdca0e30d3375 100644 (file)
@@ -159,29 +159,37 @@ rect_br:
        ;               a == 1: inside
        ;               a == 0: not inside
 rect_point_test:
-       ; top left
+       ; bottom left
        push hl
-       call rect_tl
+       inc hl ; skip mask
+
+       ; load bottom left point
+       ld a, [hl+]
+       ld d, a ; d = y
+       ld a, [hl] 
+       ld e, a ; e = x
        pop hl
 
-       ld a, b ; compare y points
+       ld a, b ; compare y
        cp a, d
-       jr c, @no_collision REL
-       ld a, c ; compare x position
+       jr nc, @no_collision REL
+       ld a, c ; compare x
        cp a, e
        jr c, @no_collision REL
-       
-       ; bottom left
+
+       ; top left
        push hl
-       call rect_bl
+       call rect_tl
        pop hl
 
-       ld a, b ; compare y
+       ld a, b ; compare y points
        cp a, d
-       jr nc, @no_collision REL
-       ld a, c ; compare x
+       jr c, @no_collision REL
+       ld a, c ; compare x position
        cp a, e
        jr c, @no_collision REL
+
+
        
        ; top right
        push hl