# HG changeset patch # User Laurens Holst # Date 1497102844 -7200 # Sat Jun 10 15:54:04 2017 +0200 # Node ID 0d5cd8a87fd0da7116f419786f7e5cdee02fb7fa # Parent 38531a2f4cf2c1b99870ede30ea64abf4e73f753 Edge/FaceEdge: Pass span end coordinate to the material as well. diff --git a/src/Edge.asm b/src/Edge.asm --- a/src/Edge.asm +++ b/src/Edge.asm @@ -149,6 +149,17 @@ Edge_Render: PROC ld d,(ix + Edge.x) ld b,(ix + Edge.z) + ld a,(ix + Edge.x) + add a,(ix + Edge.stepx) + ld e,a + ld a,(ix + Edge.error) + add a,(ix + Edge.dx) + jr nc,NoOverflow + inc e + sub (ix + Edge.dy) +NoOverflow: + ld (ix + Edge.error),a + ld (ix + Edge.x),e push ix ld a,(ix + Edge.material) ld c,(ix + Edge.material + 1) @@ -156,17 +167,6 @@ ld ixh,c call Material_RenderPoint pop ix - ld a,(ix + Edge.x) - add a,(ix + Edge.stepx) - ld c,a - ld a,(ix + Edge.error) - add a,(ix + Edge.dx) - jr nc,NoOverflow - inc c - sub (ix + Edge.dy) -NoOverflow: - ld (ix + Edge.error),a - ld (ix + Edge.x),c dec (ix + Edge.height) jp nz,Renderable_Advance jp Renderable_Next @@ -177,6 +177,17 @@ Edge_RenderLeft: PROC ld d,(ix + Edge.x) ld b,(ix + Edge.z) + ld a,(ix + Edge.x) + sub (ix + Edge.stepx) + ld e,a + ld a,(ix + Edge.error) + add a,(ix + Edge.dx) + jr nc,NoOverflow + dec e + sub (ix + Edge.dy) +NoOverflow: + ld (ix + Edge.error),a + ld (ix + Edge.x),e push ix ld a,(ix + Edge.material) ld c,(ix + Edge.material + 1) @@ -184,17 +195,6 @@ ld ixh,c call Material_RenderPoint pop ix - ld a,(ix + Edge.x) - sub (ix + Edge.stepx) - ld c,a - ld a,(ix + Edge.error) - add a,(ix + Edge.dx) - jr nc,NoOverflow - dec c - sub (ix + Edge.dy) -NoOverflow: - ld (ix + Edge.error),a - ld (ix + Edge.x),c dec (ix + Edge.height) jp nz,Renderable_Advance jp Renderable_Next diff --git a/src/FaceEdge.asm b/src/FaceEdge.asm --- a/src/FaceEdge.asm +++ b/src/FaceEdge.asm @@ -152,6 +152,17 @@ FaceEdge_Render: PROC ld d,(ix + FaceEdge.x) ld b,(ix + FaceEdge.z) + ld a,(ix + FaceEdge.x) + add a,(ix + FaceEdge.stepx) + ld e,a + ld a,(ix + FaceEdge.error) + add a,(ix + FaceEdge.dx) + jr nc,NoOverflow + inc e + sub (ix + FaceEdge.dy) +NoOverflow: + ld (ix + FaceEdge.error),a + ld (ix + FaceEdge.x),e push ix ld a,(ix + FaceEdge.face) ld c,(ix + FaceEdge.face + 1) @@ -159,17 +170,6 @@ ld ixh,c call Face_Render pop ix - ld a,(ix + FaceEdge.x) - add a,(ix + FaceEdge.stepx) - ld c,a - ld a,(ix + FaceEdge.error) - add a,(ix + FaceEdge.dx) - jr nc,NoOverflow - inc c - sub (ix + FaceEdge.dy) -NoOverflow: - ld (ix + FaceEdge.error),a - ld (ix + FaceEdge.x),c dec (ix + FaceEdge.height) jp nz,Renderable_Advance jp Renderable_Next @@ -180,6 +180,17 @@ FaceEdge_RenderLeft: PROC ld d,(ix + FaceEdge.x) ld b,(ix + FaceEdge.z) + ld a,(ix + FaceEdge.x) + sub (ix + FaceEdge.stepx) + ld e,a + ld a,(ix + FaceEdge.error) + add a,(ix + FaceEdge.dx) + jr nc,NoOverflow + dec e + sub (ix + FaceEdge.dy) +NoOverflow: + ld (ix + FaceEdge.error),a + ld (ix + FaceEdge.x),e push ix ld a,(ix + FaceEdge.face) ld c,(ix + FaceEdge.face + 1) @@ -187,17 +198,6 @@ ld ixh,c call Face_Render pop ix - ld a,(ix + FaceEdge.x) - sub (ix + FaceEdge.stepx) - ld c,a - ld a,(ix + FaceEdge.error) - add a,(ix + FaceEdge.dx) - jr nc,NoOverflow - dec c - sub (ix + FaceEdge.dy) -NoOverflow: - ld (ix + FaceEdge.error),a - ld (ix + FaceEdge.x),c dec (ix + FaceEdge.height) jp nz,Renderable_Advance jp Renderable_Next