From 00d084105ac1ab4266dd466b65a8487c4bafd6cf Mon Sep 17 00:00:00 2001 From: "Peter Helcmanovsky (Ped)" Date: Mon, 19 Sep 2022 01:31:22 +0200 Subject: [PATCH] z80_unpacker: optimisation: -2B in backward unpack (fwd 172B / rev 169B) backward was already -1B, so now the total difference is -3B. --- z80_unpacker/example/example.sna | Bin 49179 -> 49179 bytes z80_unpacker/unpack.asm | 17 ++++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/z80_unpacker/example/example.sna b/z80_unpacker/example/example.sna index 0bb80da49a0c00415f7f501071bc24f56ac9cb94..608c82a0cd10aa8ef47756414fd76847ca067304 100644 GIT binary patch delta 110 zcmV-!0FnQjfCHO=1F-y|O&a1j5Dd*4;>!^*`FYtA8`)48>39UX)EeS23(Z{O8+xz9000@m?YP-c5X9BXd>{}Ahad*segNGokL_ymAmWptp*0B_;>#M# Q8w|}Fvx%bX9FuatsTpcC3jhEB delta 112 zcmV-$0FVEhfCHO=1F-y|PaNVn5Dd*6;>!^*`FYtA8`)48>39UX)Ewe43(a2Q8+xz=YXJZN3Bm2S*-#L|)ysS!5D14L2Hk!D-7AmnYVsoDlc1qB2^`|f S8p|6D%^b6bqU#)!bib!|lQg&h diff --git a/z80_unpacker/unpack.asm b/z80_unpacker/unpack.asm index e925d07..324f032 100644 --- a/z80_unpacker/unpack.asm +++ b/z80_unpacker/unpack.asm @@ -139,16 +139,19 @@ unpack: call decode_number ; length = upkr_decode_length(257 + 64); push de exx - ld h,d ; DE = write_ptr - ld l,e -.offset+*: ld bc,0 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 - add hl,bc ; HL = write_ptr + offset +.offset+*: ld hl,0 + add hl,de ; HL = write_ptr + offset + pop bc ; BC = length + lddr ENDIF - pop bc ; BC = length - IFNDEF BACKWARDS_UNPACK : ldir : ELSE : lddr : ENDIF exx ld d,b ; prev_was_match = true djnz .decompress_data ; adjust context_index back to 0..255 range, go to main loop