# HG changeset patch # User Laurens Holst # Date 1497104344 -7200 # Sat Jun 10 16:19:04 2017 +0200 # Node ID 69382a95f7755329e061e77b49ca1165c0572400 # Parent e79c0c1a056e0c05ea9a66895b9609f3ba0903b5 Face/FaceEdge: More precise pixel alignment. So that for adjacent polygons we never draw a pixel twice. diff --git a/src/Face.asm b/src/Face.asm --- a/src/Face.asm +++ b/src/Face.asm @@ -96,12 +96,12 @@ bit 0,(ix + Face.hasX) jr nz,HasX set 0,(ix + Face.hasX) - ld (ix + Face.x),d + ld (ix + Face.x),e ld (ix + Face.z),b ret HasX: res 0,(ix + Face.hasX) - ld e,(ix + Face.x) + ld d,(ix + Face.x) ld a,(ix + Face.z) add a,b rr a diff --git a/src/FaceEdge.asm b/src/FaceEdge.asm --- a/src/FaceEdge.asm +++ b/src/FaceEdge.asm @@ -178,19 +178,19 @@ ; hl = span buffer (l is insignificant, assumed 0) ; iy = this FaceEdge_RenderLeft: PROC - ld d,(ix + FaceEdge.x) + ld e,(ix + FaceEdge.x) ld b,(ix + FaceEdge.z) - ld a,d + ld a,e sub (ix + FaceEdge.stepx) - ld e,a + ld d,a ld a,(ix + FaceEdge.error) add a,(ix + FaceEdge.dx) jr nc,NoOverflow - dec e + dec d sub (ix + FaceEdge.dy) NoOverflow: ld (ix + FaceEdge.error),a - ld (ix + FaceEdge.x),e + ld (ix + FaceEdge.x),d push ix ld a,(ix + FaceEdge.face) ld c,(ix + FaceEdge.face + 1)