Skip to content

Commit 4892af6

Browse files
committed
Optimized _MultiplyHLDE
1 parent 2e07062 commit 4892af6

File tree

1 file changed

+56
-60
lines changed

1 file changed

+56
-60
lines changed

src/graphx/graphx.asm

+56-60
Original file line numberDiff line numberDiff line change
@@ -1344,8 +1344,8 @@ _Ellipse:
13441344
ld (ix - el_comp_a),hl
13451345
inc hl
13461346
sbc hl,bc
1347-
ld bc,(ix - el_a2)
1348-
call _MultiplyHLBC
1347+
ld de,(ix - el_a2)
1348+
call _MultiplyHLDE
13491349
ld bc,(ix - el_b2)
13501350
add hl,bc
13511351
add hl,bc
@@ -1358,13 +1358,13 @@ _Ellipse:
13581358
sbc hl,hl
13591359
inc hl
13601360
sbc hl,de
1361-
ld bc,(ix - el_fb2)
1362-
call _MultiplyHLBC
1361+
ld de,(ix - el_fb2)
1362+
call _MultiplyHLDE
13631363
ld (ix - el_sigma_2),hl ; int sigma_add_2 = fb2 * (1 - a);
13641364

13651365
ld hl,(ix - el_a2)
1366-
ld bc,(ix - el_y)
1367-
call _MultiplyHLBC
1366+
ld de,(ix - el_y)
1367+
call _MultiplyHLDE
13681368
ld (ix - el_comp_b),hl
13691369
13701370
wait_quick
@@ -1437,16 +1437,16 @@ _ellipse_loop_draw_2 := $-3
14371437
mlt de
14381438
inc hl
14391439
sbc hl,de
1440-
ld bc,(ix - el_b2)
1441-
call _MultiplyHLBC
1440+
ld de,(ix - el_b2)
1441+
call _MultiplyHLDE
14421442
ld de,(ix - el_a2)
14431443
add hl,de
14441444
add hl,de
14451445
ld (ix - el_sigma), hl
14461446

14471447
ld hl,(ix - el_b2)
1448-
ld bc,(ix - el_temp1)
1449-
call _MultiplyHLBC
1448+
ld de,(ix - el_temp1)
1449+
call _MultiplyHLDE
14501450
ld (ix - el_comp_b),hl
14511451

14521452
.main_loop2:
@@ -4324,15 +4324,15 @@ _FillTriangle:
43244324
ld hl,(ix-12)
43254325
or a,a
43264326
sbc hl,bc
4327-
ld bc,(ix-30)
4328-
call _MultiplyHLBC ; sa = dx12 * (y - y1);
4327+
ld de,(ix-30)
4328+
call _MultiplyHLDE ; sa = dx12 * (y - y1);
43294329
ld (ix-15),hl
43304330
ld bc,(ix+9)
43314331
ld hl,(ix-12)
43324332
or a,a
43334333
sbc hl,bc
4334-
ld bc,(ix-21)
4335-
call _MultiplyHLBC ; sb = dx02 * (y - y0);
4334+
ld de,(ix-21)
4335+
call _MultiplyHLDE ; sb = dx02 * (y - y0);
43364336
ld (ix-18),hl
43374337
jp .secondloopstart ; for(; y <= y2; y++)
43384338
.secondloop:
@@ -6451,66 +6451,62 @@ _DivideHLBC:
64516451
ret
64526452

64536453
;-------------------------------------------------------------------------------
6454-
_MultiplyHLDE:
6454+
if 0
6455+
_MultiplyHLBC:
64556456
; Performs (un)signed integer multiplication
64566457
; Inputs:
64576458
; HL : Operand 1
6458-
; DE : Operand 2
6459+
; BC : Operand 2
64596460
; Outputs:
6460-
; HL = HL*DE
6461-
push de
6462-
pop bc
6461+
; HL = HL*BC
6462+
push bc
6463+
pop de
6464+
end if
64636465

64646466
;-------------------------------------------------------------------------------
6465-
_MultiplyHLBC:
6467+
; identical to __imulu_fast, but BC and DE are swapped
6468+
_MultiplyHLDE:
64666469
; Performs (un)signed integer multiplication
64676470
; Inputs:
64686471
; HL : Operand 1
6469-
; BC : Operand 2
6472+
; DE : Operand 2
64706473
; Outputs:
6471-
; HL = HL*BC
6472-
push iy
6473-
push hl
6474-
push bc
6474+
; HL = HL*DE
6475+
ld b, d
6476+
ld c, h
6477+
mlt bc
6478+
ld a, c
6479+
dec sp
64756480
push hl
6476-
ld iy,0
6477-
ld d,l
6478-
ld e,b
6479-
mlt de
6480-
add iy,de
6481-
ld d,c
6482-
ld e,h
6483-
mlt de
6484-
add iy,de
6485-
ld d,c
6486-
ld e,l
6481+
push de
6482+
inc sp
6483+
pop bc
6484+
ld c, l
6485+
mlt bc
6486+
add a, c
6487+
pop bc
6488+
ld c, e
6489+
mlt bc
6490+
add a, c
6491+
ld b, e
6492+
ld c, l
6493+
ld l, b
6494+
ld e, c
64876495
mlt de
6488-
ld c,h
64896496
mlt bc
6490-
ld a,c
6491-
inc sp
6492-
inc sp
6493-
pop hl
64946497
mlt hl
6495-
add a,l
6496-
pop hl
6497-
inc sp
6498-
mlt hl
6499-
add a,l
6500-
ld b,a
6501-
ld c,0
6502-
lea hl,iy+0
6503-
add hl,bc
6504-
add hl,hl
6505-
add hl,hl
6506-
add hl,hl
6507-
add hl,hl
6508-
add hl,hl
6509-
add hl,hl
6510-
add hl,hl
6511-
add hl,hl
6512-
add hl,de
6513-
pop iy
6498+
add hl, de
6499+
add a, h
6500+
ld h, a
6501+
add hl, hl
6502+
add hl, hl
6503+
add hl, hl
6504+
add hl, hl
6505+
add hl, hl
6506+
add hl, hl
6507+
add hl, hl
6508+
add hl, hl
6509+
add hl, bc
65146510
ret
65156511

65166512
;-------------------------------------------------------------------------------

0 commit comments

Comments
 (0)