Skip to content

Commit 428b1a3

Browse files
ZERICO2005mateoconlechuga
authored andcommitted
saved 37 bytes in gfx_Ellipse by using IY for SMC
1 parent f57a5a1 commit 428b1a3

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/graphx/graphx.asm

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,38 +1219,36 @@ assert .LcdSizeH and ti.lcdIntLNBU
12191219

12201220
;-------------------------------------------------------------------------------
12211221
gfx_FillEllipse_NoClip:
1222-
ld hl,gfx_HorizLine_NoClip
1222+
ld hl, gfx_HorizLine_NoClip
12231223
db $FD ; ld hl,* -> ld iy,*
12241224

12251225
;-------------------------------------------------------------------------------
12261226
gfx_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
;-------------------------------------------------------------------------------
12381237
gfx_Ellipse_NoClip:
1239-
ld hl,_SetPixel_NoClip_NoWait
1238+
ld hl, _SetPixel_NoClip_NoWait
12401239
db $FD ; ld hl,* -> ld iy,*
12411240

12421241
;-------------------------------------------------------------------------------
12431242
gfx_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

12551253
el_x := 3 ; Current X coordinate of the ellipse
12561254
el_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
12681266
el_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

Comments
 (0)