@@ -1219,38 +1219,36 @@ assert .LcdSizeH and ti.lcdIntLNBU
12191219
12201220;-------------------------------------------------------------------------------
12211221gfx_FillEllipse_NoClip:
1222- ld hl , gfx_HorizLine_NoClip
1222+ ld hl , gfx_HorizLine_NoClip
12231223 db $ FD ; ld hl,* -> ld iy,*
12241224
12251225;-------------------------------------------------------------------------------
12261226gfx_FillEllipse:
1227- ld hl , gfx_HorizLine
1228- ld (_ellipse_line_routine_1) , hl
1229- ld (_ellipse_line_routine_2) , hl
1230- ld hl , _ellipse_draw_line
1231- ld (_ellipse_loop_draw_2) , hl
1232- ld (_ellipse_loop_draw_3) , hl
1233- ld hl , _ellipse_ret
1234- ld (_ellipse_loop_draw_1) , hl
1227+ ld hl , gfx_HorizLine
1228+ ld iy , _ellipse_smc_base
1229+ ld (iy + (_ellipse_line_routine_1 - _ellipse_smc_base)) , hl
1230+ ld (iy + (_ellipse_line_routine_2 - _ellipse_smc_base)) , hl
1231+ lea hl , iy + (_ellipse_ret - _ellipse_smc_base)
1232+ lea de , iy + (_ellipse_draw_line - _ellipse_smc_base)
1233+ ld (iy + (_ellipse_loop_draw_3 - _ellipse_smc_base)) , de
12351234 jr _Ellipse
12361235
12371236;-------------------------------------------------------------------------------
12381237gfx_Ellipse_NoClip:
1239- ld hl , _SetPixel_NoClip_NoWait
1238+ ld hl , _SetPixel_NoClip_NoWait
12401239 db $ FD ; ld hl,* -> ld iy,*
12411240
12421241;-------------------------------------------------------------------------------
12431242gfx_Ellipse:
1244- ld hl , _SetPixel_NoWait
1245- ld (_ellipse_pixel_routine_1) , hl
1246- ld (_ellipse_pixel_routine_2) , hl
1247- ld (_ellipse_pixel_routine_3) , hl
1248- ld (_ellipse_pixel_routine_4) , hl
1249- ld hl , _ellipse_draw_pixels
1250- ld (_ellipse_loop_draw_1) , hl
1251- ld (_ellipse_loop_draw_3) , hl
1252- ld hl , _ellipse_ret
1253- ld (_ellipse_loop_draw_2) , hl
1243+ ld hl , _SetPixel_NoWait
1244+ ld iy , _ellipse_smc_base
1245+ ld (iy + (_ellipse_pixel_routine_1 - _ellipse_smc_base)) , hl
1246+ ld (iy + (_ellipse_pixel_routine_2 - _ellipse_smc_base)) , hl
1247+ ld (iy + (_ellipse_pixel_routine_3 - _ellipse_smc_base)) , hl
1248+ ld (iy + (_ellipse_pixel_routine_4 - _ellipse_smc_base)) , hl
1249+ lea de , iy + (_ellipse_ret - _ellipse_smc_base)
1250+ lea hl , iy + (_ellipse_draw_pixels - _ellipse_smc_base)
1251+ ld (iy + (_ellipse_loop_draw_3 - _ellipse_smc_base)) , hl
12541252
12551253el_x := 3 ; Current X coordinate of the ellipse
12561254el_y := 6 ; Current Y coordinate of the ellipse
@@ -1268,6 +1266,9 @@ el_sigma_diff1 := 39 ; Offset to be added to sigma in loop 1
12681266el_sigma_diff2 := 42 ; Offset to be added to sigma in loop 2
12691267
12701268_Ellipse:
1269+ lea iy , iy - 128
1270+ ld (iy + (_ellipse_loop_draw_1 - _ellipse_smc_base_m128)) , hl
1271+ ld (iy + (_ellipse_loop_draw_2 - _ellipse_smc_base_m128)) , de
12711272; Draws an ellipse, either filled or not, either clipped or not
12721273; Arguments:
12731274; arg0 : X coordinate (ix+6)
@@ -1502,6 +1503,8 @@ _ellipse_loop_draw_3 := $-3
15021503 ld sp , ix
15031504 pop ix
15041505_ellipse_ret:
1506+ _ellipse_smc_base := $
1507+ _ellipse_smc_base_m128 := _ellipse_smc_base - 128
15051508 ret
15061509
15071510_ellipse_draw_pixels:
0 commit comments