# HG changeset patch # User Laurens Holst # Date 1499538832 -7200 # Sat Jul 08 20:33:52 2017 +0200 # Node ID f4a399c0af2503429f663357eb831d0c2c68427f # Parent 6c02ba6f25e0e99a9468fb003899dec2225b909f Edge/FaceEdge: Avoid divide for y-major edges. diff --git a/src/Edge.asm b/src/Edge.asm --- a/src/Edge.asm +++ b/src/Edge.asm @@ -74,10 +74,23 @@ ld (ix + Edge.super.render),Edge_RenderLeft & 0FFH ld (ix + Edge.super.render + 1),Edge_RenderLeft >> 8 Continue: + cp c + jr z,XYEqual + jr nc,XMajor +YMajor: + ld (ix + Edge.stepx),0 + ld (ix + Edge.dx),a + jr Continue2 +XYEqual: + ld (ix + Edge.stepx),1 + ld (ix + Edge.dx),0 + jr Continue2 +XMajor: ld e,a call Math_Divide8x8 ld (ix + Edge.stepx),a ld (ix + Edge.dx),b +Continue2: xor a srl c sbc a,c diff --git a/src/FaceEdge.asm b/src/FaceEdge.asm --- a/src/FaceEdge.asm +++ b/src/FaceEdge.asm @@ -74,10 +74,23 @@ ld (ix + FaceEdge.super.render),FaceEdge_RenderLeft & 0FFH ld (ix + FaceEdge.super.render + 1),FaceEdge_RenderLeft >> 8 Continue: + cp c + jr z,XYEqual + jr nc,XMajor +YMajor: + ld (ix + FaceEdge.stepx),0 + ld (ix + FaceEdge.dx),a + jr Continue2 +XYEqual: + ld (ix + FaceEdge.stepx),1 + ld (ix + FaceEdge.dx),0 + jr Continue2 +XMajor: ld e,a call Math_Divide8x8 ld (ix + FaceEdge.stepx),a ld (ix + FaceEdge.dx),b +Continue2: xor a srl c sbc a,c