mirror of
https://github.com/exoticorn/upkr.git
synced 2026-01-20 11:36:42 +01:00
z80_unpacker: optimisation: -2B in backward unpack (fwd 172B / rev 169B)
backward was already -1B, so now the total difference is -3B.
This commit is contained in:
Binary file not shown.
@@ -139,16 +139,19 @@ unpack:
|
|||||||
call decode_number ; length = upkr_decode_length(257 + 64);
|
call decode_number ; length = upkr_decode_length(257 + 64);
|
||||||
push de
|
push de
|
||||||
exx
|
exx
|
||||||
ld h,d ; DE = write_ptr
|
|
||||||
ld l,e
|
|
||||||
.offset+*: ld bc,0
|
|
||||||
IFNDEF BACKWARDS_UNPACK
|
IFNDEF BACKWARDS_UNPACK
|
||||||
sbc hl,bc ; CF=0 from decode_number ; HL = write_ptr - offset
|
ld h,d ; DE = write_ptr
|
||||||
|
ld l,e
|
||||||
|
.offset+*: ld bc,0
|
||||||
|
sbc hl,bc ; CF=0 from decode_number ; HL = write_ptr - offset
|
||||||
|
pop bc ; BC = length
|
||||||
|
ldir
|
||||||
ELSE
|
ELSE
|
||||||
add hl,bc ; HL = write_ptr + offset
|
.offset+*: ld hl,0
|
||||||
|
add hl,de ; HL = write_ptr + offset
|
||||||
|
pop bc ; BC = length
|
||||||
|
lddr
|
||||||
ENDIF
|
ENDIF
|
||||||
pop bc ; BC = length
|
|
||||||
IFNDEF BACKWARDS_UNPACK : ldir : ELSE : lddr : ENDIF
|
|
||||||
exx
|
exx
|
||||||
ld d,b ; prev_was_match = true
|
ld d,b ; prev_was_match = true
|
||||||
djnz .decompress_data ; adjust context_index back to 0..255 range, go to main loop
|
djnz .decompress_data ; adjust context_index back to 0..255 range, go to main loop
|
||||||
|
|||||||
Reference in New Issue
Block a user