From f6db693121b17d2ee2d1a663f022f837a6330818 Mon Sep 17 00:00:00 2001 From: Brendan Fletcher Date: Sat, 31 Jan 2026 13:59:30 -0500 Subject: [PATCH 1/8] Implement LZ4 block decompression --- src/ce/include/compression.h | 23 +++- src/ce/lz4.src | 203 +++++++++++++++++++++++++++++++++++ src/crt/cttz.src | 1 - 3 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 src/ce/lz4.src diff --git a/src/ce/include/compression.h b/src/ce/include/compression.h index 05a67e1cd..edc009d4a 100644 --- a/src/ce/include/compression.h +++ b/src/ce/include/compression.h @@ -8,6 +8,8 @@ #ifndef COMPRESSION_H #define COMPRESSION_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -28,8 +30,27 @@ void zx7_Decompress(void *dst, const void *src); */ void zx0_Decompress(void *dst, const void *src); +/** + * Decompress a length-prefixed block of LZ4 encoded data. + * + * @param[in] dst Uncompressed data destination. + * @param[in] src Compressed data source. +*/ +void lz4_Decompress(void *dst, const void *src); + +/** + * Decompress a raw block of LZ4 encoded data. + * + * @param[in] dst Uncompressed data destination. + * @param[in] src Compressed data source start. + * @param[in] size Compressed data source size. + * + * @returns The uncompressed data size. +*/ +size_t lz4_Decompress_Block(void *dst, const void *src, size_t size); + #ifdef __cplusplus } #endif -#endif +#endif /* COMPRESSION_H */ diff --git a/src/ce/lz4.src b/src/ce/lz4.src new file mode 100644 index 000000000..144ebfa86 --- /dev/null +++ b/src/ce/lz4.src @@ -0,0 +1,203 @@ + .assume adl=1 + + .section .text._lz4_Decompress_Block + .global _lz4_Decompress_Block + .type _lz4_Decompress_Block, @function + + ; size_t lz4_Decompress_Block(void *dst, const void *block, size_t block_size); +_lz4_Decompress_Block: + ld iy, 0 + add iy, sp + ; DE = dst + ld de, (iy + 3) + ; BC = block_size + ld bc, (iy + 9) + ; IY = block + ld iy, (iy + 6) + ; Save dst + push de + call lz4_decompress_block_internal + ; Calculate decompressed size based on final dst + ex de, hl + pop de + or a, a + sbc hl, de + ret + + .section .text._lz4_Decompress + .global _lz4_Decompress + .type _lz4_Decompress, @function + + ; void lz4_Decompress(void *dst, const void *src); +_lz4_Decompress: + ld hl, 3 + add hl, sp + ; DE = dst + ld de, (hl) + inc hl + inc hl + inc hl + ; IY = src + ld iy, (hl) + ; BC = size + ld bc, (iy) + ; Skip size header + lea iy, iy + 3 + ; Fallthrough + + .local lz4_decompress_block_internal + .type lz4_decompress_block_internal, @function + + ; Input: IY = compressed block, DE = decompression buffer, BC = size of block + ; Output: IY = after compressed block, DE = after decompressed data + ; Destroys: AF, BC, HL +lz4_decompress_block_internal: + ; HL = compressed block + lea hl, iy + 0 + ; Set IY to after compressed block + add iy, bc + inc.s bc ; BCU = 0 + ; Read the first token + ld a, (hl) + ; Check for the special case of zero-length output + or a, a + jr nz, .L.start + ret + +.L.copy_backref_long: + ; Read the last length byte + dec hl + ld a, (hl) + inc hl + ; Save the input pointer and restore the backref pointer + ex (sp), hl + ; Copy the amount prior to the last length byte, minus 1 + ldir + ; Copy the amount of the last length byte, plus 1 + ld c, a + inc bc +.L.copy_backref: + ; Copy the backref data + ldir + ; Restore the input pointer + pop hl + ; Read the next token + ld a, (hl) +.L.start: + inc hl + ; Check if the literal field is zero + ; If so, this cannot be the end of block, go directly to backref handling + ld c, $10 + cp a, c + jr c, .L.backref + ; Save the token in B + ld b, a + ; Check for extended literal + add a, c + jr c, .L.literal_long + ; Multiply the token by 16, placing the literal field in B + mlt bc + ; Set BC to the literal length, which is known to be non-zero + ld c, b + ld b, 0 + ; Mask the backref field, affecting the zero flag, and clear carry + and a, $0F +.L.copy_literal: + ; Copy the literals + ldir + ; Zero flag is currently set according to the backref field + ; If the backref field is non-zero, this cannot be end of block + jr nz, .L.backref + ; Check for end of block (carry is currently clear) + lea bc, iy + 0 + sbc hl, bc + ret nc + add hl, bc + inc.s bc ; BCU = 0 +.L.backref: + ; Read backref offset into BC + ld c, (hl) + inc hl + ld b, (hl) + inc hl + ; Save the input pointer + push hl + ; Add 4 to backref length field, and clear carry + add a, 4 + ; Calculate HL = DE - BC + sbc hl, hl + add hl, de + sbc hl, bc + ; Set BC to backref length + ld c, a + ld b, 0 + ; Check for extended length + add a, -($0F + 4) + jr nc, .L.copy_backref + ; Save the backref pointer and restore the input pointer + ex (sp), hl +.L.backref_loop_outer: + ; Carry is always set here, set A = 255 + sbc a, a +.L.backref_loop: + ; Check for a length byte of 255, and decrement the length by 1 + cpi + jr nz, .L.copy_backref_long + ; Increment the length by 256 + inc b + ; Loop if B did not carry to 0 + jr nz, .L.backref_loop + ; Save C + ld a, c + ; Set B = C = 255 + dec b + ld c, b + ; Increment BCU and set B = C = 0 + inc bc + ; Restore C + ld c, a + jr .L.backref_loop_outer + +.L.literal_long: + ; Save the backref field + push af + ; Start with literal length of 15 + ld b, 0 + dec bc +.L.literal_loop_outer: + ; Carry is always set here, set A = 255 + sbc a, a +.L.literal_loop: + ; Check for a length byte of 255, and decrement the length by 1 + cpi + jr nz, .L.copy_literal_long + ; Increment the length by 256 + inc b + ; Loop if B did not carry to 0 + jr nz, .L.literal_loop + ; Save C + ld a, c + ; Set B = C = 255 + dec b + ld c, b + ; Increment BCU and set B = C = 0 + inc bc + ; Restore C + ld c, a + jr .L.literal_loop_outer + +.L.copy_literal_long: + ; Read the last length byte + dec hl + ld a, (hl) + inc hl + ; Copy the amount prior to the last length byte, minus 1 + ldir + ; Copy the amount of the last length byte, plus 1 + ld c, a + inc bc + ; Restore the backref field + pop af + ; Affect the zero flag based on the backref field and clear carry + or a, a + jr .L.copy_literal diff --git a/src/crt/cttz.src b/src/crt/cttz.src index 8f4e051a7..7f29a126b 100644 --- a/src/crt/cttz.src +++ b/src/crt/cttz.src @@ -7,7 +7,6 @@ __bcttz: cp a, 1 - .section .text.__cttz_common .local __cttz_common ; Input: A=byte, CF=(A==0) ; Output: A=cttz(A) From c535725514a457faaad1fa45549fe2494988f64a Mon Sep 17 00:00:00 2001 From: Brendan Fletcher Date: Sat, 31 Jan 2026 16:58:38 -0500 Subject: [PATCH 2/8] Improve speed for literal/match lengths from 15 to 269, reduce size --- src/ce/lz4.src | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/ce/lz4.src b/src/ce/lz4.src index 144ebfa86..3efbe5bae 100644 --- a/src/ce/lz4.src +++ b/src/ce/lz4.src @@ -65,17 +65,12 @@ lz4_decompress_block_internal: ret .L.copy_backref_long: - ; Read the last length byte - dec hl - ld a, (hl) - inc hl ; Save the input pointer and restore the backref pointer ex (sp), hl ; Copy the amount prior to the last length byte, minus 1 ldir ; Copy the amount of the last length byte, plus 1 ld c, a - inc bc .L.copy_backref: ; Copy the backref data ldir @@ -132,16 +127,18 @@ lz4_decompress_block_internal: ld c, a ld b, 0 ; Check for extended length - add a, -($0F + 4) - jr nc, .L.copy_backref + cp a, $0F + 4 + jr nz, .L.copy_backref ; Save the backref pointer and restore the input pointer ex (sp), hl -.L.backref_loop_outer: - ; Carry is always set here, set A = 255 - sbc a, a .L.backref_loop: - ; Check for a length byte of 255, and decrement the length by 1 - cpi + ; Read the next length byte + ld a, (hl) + inc hl + ; Decrement the length by 1 + dec bc + ; Increment the length byte, and check if it was 255 + inc a jr nz, .L.copy_backref_long ; Increment the length by 256 inc b @@ -156,7 +153,7 @@ lz4_decompress_block_internal: inc bc ; Restore C ld c, a - jr .L.backref_loop_outer + jr .L.backref_loop .L.literal_long: ; Save the backref field @@ -164,12 +161,14 @@ lz4_decompress_block_internal: ; Start with literal length of 15 ld b, 0 dec bc -.L.literal_loop_outer: - ; Carry is always set here, set A = 255 - sbc a, a .L.literal_loop: - ; Check for a length byte of 255, and decrement the length by 1 - cpi + ; Read the next length byte + ld a, (hl) + inc hl + ; Decrement the length by 1 + dec bc + ; Increment the length byte, and check if it was 255 + inc a jr nz, .L.copy_literal_long ; Increment the length by 256 inc b @@ -184,18 +183,13 @@ lz4_decompress_block_internal: inc bc ; Restore C ld c, a - jr .L.literal_loop_outer + jr .L.literal_loop .L.copy_literal_long: - ; Read the last length byte - dec hl - ld a, (hl) - inc hl ; Copy the amount prior to the last length byte, minus 1 ldir ; Copy the amount of the last length byte, plus 1 ld c, a - inc bc ; Restore the backref field pop af ; Affect the zero flag based on the backref field and clear carry From dcda9155ea97e7e5c658af31d698a215d34ec2a0 Mon Sep 17 00:00:00 2001 From: Brendan Fletcher Date: Sun, 1 Feb 2026 06:00:33 -0500 Subject: [PATCH 3/8] Improve speed of extended length loops --- src/ce/lz4.src | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/ce/lz4.src b/src/ce/lz4.src index 3efbe5bae..b4f53985b 100644 --- a/src/ce/lz4.src +++ b/src/ce/lz4.src @@ -127,18 +127,17 @@ lz4_decompress_block_internal: ld c, a ld b, 0 ; Check for extended length - cp a, $0F + 4 + add a, -($0F + 4) jr nz, .L.copy_backref ; Save the backref pointer and restore the input pointer ex (sp), hl .L.backref_loop: - ; Read the next length byte - ld a, (hl) + ; Read the next length byte and add 1 + adc a, (hl) inc hl ; Decrement the length by 1 dec bc - ; Increment the length byte, and check if it was 255 - inc a + ; Check if the length byte was 255 jr nz, .L.copy_backref_long ; Increment the length by 256 inc b @@ -153,6 +152,8 @@ lz4_decompress_block_internal: inc bc ; Restore C ld c, a + ; Set A = 0, preserving carry as 1 + ld a, b jr .L.backref_loop .L.literal_long: @@ -161,14 +162,16 @@ lz4_decompress_block_internal: ; Start with literal length of 15 ld b, 0 dec bc +.L.literal_loop_outer: + ; Set A = 0, preserving carry as 1 + ld a, b .L.literal_loop: - ; Read the next length byte - ld a, (hl) + ; Read the next length byte and add 1 + adc a, (hl) inc hl ; Decrement the length by 1 dec bc - ; Increment the length byte, and check if it was 255 - inc a + ; Check if the length byte was 255 jr nz, .L.copy_literal_long ; Increment the length by 256 inc b @@ -183,7 +186,7 @@ lz4_decompress_block_internal: inc bc ; Restore C ld c, a - jr .L.literal_loop + jr .L.literal_loop_outer .L.copy_literal_long: ; Copy the amount prior to the last length byte, minus 1 From db6a6f937f62f7cd2b9c149fd3071037cde3d707 Mon Sep 17 00:00:00 2001 From: Brendan Fletcher Date: Sun, 1 Feb 2026 19:12:05 -0500 Subject: [PATCH 4/8] Cheapen most end-of-block checks in the hot path --- src/ce/lz4.src | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/ce/lz4.src b/src/ce/lz4.src index b4f53985b..51a9557ea 100644 --- a/src/ce/lz4.src +++ b/src/ce/lz4.src @@ -95,20 +95,17 @@ lz4_decompress_block_internal: ; Set BC to the literal length, which is known to be non-zero ld c, b ld b, 0 - ; Mask the backref field, affecting the zero flag, and clear carry - and a, $0F -.L.copy_literal: ; Copy the literals ldir - ; Zero flag is currently set according to the backref field - ; If the backref field is non-zero, this cannot be end of block + ; Mask the backref field + and a, $0F + ; If the backref field is non-zero, this cannot be end of block jr nz, .L.backref - ; Check for end of block (carry is currently clear) - lea bc, iy + 0 - sbc hl, bc - ret nc - add hl, bc - inc.s bc ; BCU = 0 + ; Check for end of block quickly + ld a, l + sub a, iyl + jr z, .L.maybe_end_of_block + xor a, a .L.backref: ; Read backref offset into BC ld c, (hl) @@ -157,7 +154,7 @@ lz4_decompress_block_internal: jr .L.backref_loop .L.literal_long: - ; Save the backref field + ; Save the backref field and zero flag push af ; Start with literal length of 15 ld b, 0 @@ -193,8 +190,18 @@ lz4_decompress_block_internal: ldir ; Copy the amount of the last length byte, plus 1 ld c, a - ; Restore the backref field + ldir + ; Restore the backref field and zero flag pop af - ; Affect the zero flag based on the backref field and clear carry + ; If the backref field is non-zero, this cannot be end of block + jr nz, .L.backref + ; Clear carry or a, a - jr .L.copy_literal +.L.maybe_end_of_block: + ; Full check for end of block (carry is clear and A = 0) + lea bc, iy + 0 + sbc hl, bc + add hl, bc + inc.s bc ; BCU = 0 + jr nz, .L.backref + ret From 3d5e706a1054621689a15359a592bba9097bcc2d Mon Sep 17 00:00:00 2001 From: Brendan Fletcher Date: Mon, 2 Feb 2026 12:10:57 -0500 Subject: [PATCH 5/8] Save an instruction in block decompress based on known state of carry flag --- src/ce/lz4.src | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ce/lz4.src b/src/ce/lz4.src index 51a9557ea..2c30ae20c 100644 --- a/src/ce/lz4.src +++ b/src/ce/lz4.src @@ -20,7 +20,6 @@ _lz4_Decompress_Block: ; Calculate decompressed size based on final dst ex de, hl pop de - or a, a sbc hl, de ret @@ -49,7 +48,7 @@ _lz4_Decompress: .type lz4_decompress_block_internal, @function ; Input: IY = compressed block, DE = decompression buffer, BC = size of block - ; Output: IY = after compressed block, DE = after decompressed data + ; Output: IY = after compressed block, DE = after decompressed data, carry flag clear ; Destroys: AF, BC, HL lz4_decompress_block_internal: ; HL = compressed block From 554f6790bba990b756130c0da70c5ce17e243d1d Mon Sep 17 00:00:00 2001 From: Matthew Waltz Date: Tue, 3 Feb 2026 21:29:13 -0700 Subject: [PATCH 6/8] Add LZ4 decompression test --- src/makefile.mk | 2 +- test/graphx/background_lz4/.gitignore | 7 ++++ test/graphx/background_lz4/autotest.json | 36 ++++++++++++++++++ test/graphx/background_lz4/makefile | 15 ++++++++ .../background_lz4/src/gfx/background.png | Bin 0 -> 100149 bytes .../background_lz4/src/gfx/convimg.yaml | 19 +++++++++ test/graphx/background_lz4/src/main.c | 29 ++++++++++++++ 7 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 test/graphx/background_lz4/.gitignore create mode 100644 test/graphx/background_lz4/autotest.json create mode 100644 test/graphx/background_lz4/makefile create mode 100644 test/graphx/background_lz4/src/gfx/background.png create mode 100644 test/graphx/background_lz4/src/gfx/convimg.yaml create mode 100644 test/graphx/background_lz4/src/main.c diff --git a/src/makefile.mk b/src/makefile.mk index 7b06a5456..2b453fc38 100644 --- a/src/makefile.mk +++ b/src/makefile.mk @@ -204,7 +204,7 @@ LIBLOAD_LIBS ?= $(wildcard $(CEDEV_TOOLCHAIN)/lib/libload/*.lib) $(EXTRA_LIBLOAD LIBLOAD_LIBS := $(foreach l,$(filter-out %libload.lib,$(LIBLOAD_LIBS)),$(call QUOTE_ARG,$(call FORWARD_PATH,$l))) endif -# check if there is an icon present that to convert +# check if there is an icon to convert ifneq ($(ICON_IMG),) ICON_SRC = $(OBJDIR)/icon.s ifneq ($(DESCRIPTION),) diff --git a/test/graphx/background_lz4/.gitignore b/test/graphx/background_lz4/.gitignore new file mode 100644 index 000000000..4cc0a8af5 --- /dev/null +++ b/test/graphx/background_lz4/.gitignore @@ -0,0 +1,7 @@ +obj/ +bin/ +src/gfx/*.c +src/gfx/*.h +src/gfx/*.8xv +.DS_Store +convimg.yaml.lst diff --git a/test/graphx/background_lz4/autotest.json b/test/graphx/background_lz4/autotest.json new file mode 100644 index 000000000..9f3d9c193 --- /dev/null +++ b/test/graphx/background_lz4/autotest.json @@ -0,0 +1,36 @@ +{ + "transfer_files": + [ + "bin/DEMO.8xp" + ], + "target": + { + "name": "DEMO", + "isASM": true + }, + "sequence": + [ + "action|launch", + "delay|500", + "hashWait|1", + "key|enter", + "hashWait|2" + ], + "hashes": + { + "1": + { + "description": "Test fullscreen image display", + "start": "vram_start", + "size": "vram_8_size", + "expected_CRCs": [ "69A1B0DB" ] + }, + "2": + { + "description": "Test program exit", + "start": "vram_start", + "size": "vram_16_size", + "expected_CRCs": [ "FFAF89BA", "101734A5", "9DA19F44", "A32840C8", "349F4775" ] + } + } +} diff --git a/test/graphx/background_lz4/makefile b/test/graphx/background_lz4/makefile new file mode 100644 index 000000000..b869526cc --- /dev/null +++ b/test/graphx/background_lz4/makefile @@ -0,0 +1,15 @@ +# ---------------------------- +# Makefile Options +# ---------------------------- + +NAME = DEMO +ICON = icon.png +DESCRIPTION = "CE C Toolchain Demo" +COMPRESSED = NO + +CFLAGS = -Wall -Wextra -Oz +CXXFLAGS = -Wall -Wextra -Oz + +# ---------------------------- + +include $(shell cedev-config --makefile) diff --git a/test/graphx/background_lz4/src/gfx/background.png b/test/graphx/background_lz4/src/gfx/background.png new file mode 100644 index 0000000000000000000000000000000000000000..d24c31ee7d7514a941190ea4e4f677c421d720b7 GIT binary patch literal 100149 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 literal 0 HcmV?d00001 diff --git a/test/graphx/background_lz4/src/gfx/convimg.yaml b/test/graphx/background_lz4/src/gfx/convimg.yaml new file mode 100644 index 000000000..699ed5919 --- /dev/null +++ b/test/graphx/background_lz4/src/gfx/convimg.yaml @@ -0,0 +1,19 @@ +palettes: + - name: global_palette + images: automatic + +converts: + - name: background + palette: global_palette + compress: lz4hc + width-and-height: false + images: + - background.png + +outputs: + - type: c + include-file: gfx.h + palettes: + - global_palette + converts: + - background diff --git a/test/graphx/background_lz4/src/main.c b/test/graphx/background_lz4/src/main.c new file mode 100644 index 000000000..025080418 --- /dev/null +++ b/test/graphx/background_lz4/src/main.c @@ -0,0 +1,29 @@ +#include +#include +#include + +#include "gfx/gfx.h" + +int main(void) +{ + gfx_Begin(); + + gfx_SetPalette(global_palette, sizeof_global_palette, 0); + + lz4_Decompress(gfx_vram, background_compressed); + + while (!os_GetCSC()); + + gfx_ZeroScreen(); + + if (lz4_Decompress_Block(gfx_vram, background_compressed + sizeof(uint24_t), background_compressed_size) != background_size) + { + gfx_ZeroScreen(); + } + + while (!os_GetCSC()); + + gfx_End(); + + return 0; +} From 0c9e93b7bad92be8e6592793dc2cd63d03bd0d0f Mon Sep 17 00:00:00 2001 From: Matthew Waltz Date: Tue, 3 Feb 2026 21:36:46 -0700 Subject: [PATCH 7/8] Update test autotest --- test/graphx/background_lz4/autotest.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/graphx/background_lz4/autotest.json b/test/graphx/background_lz4/autotest.json index 9f3d9c193..e903b0c75 100644 --- a/test/graphx/background_lz4/autotest.json +++ b/test/graphx/background_lz4/autotest.json @@ -14,7 +14,9 @@ "delay|500", "hashWait|1", "key|enter", - "hashWait|2" + "hashWait|2", + "key|enter", + "hashWait|3" ], "hashes": { @@ -26,6 +28,13 @@ "expected_CRCs": [ "69A1B0DB" ] }, "2": + { + "description": "Test fullscreen image display", + "start": "vram_start", + "size": "vram_8_size", + "expected_CRCs": [ "69A1B0DB" ] + }, + "3": { "description": "Test program exit", "start": "vram_start", From 1d88fc2c5ce937179371bb391e5a5e5b829769f0 Mon Sep 17 00:00:00 2001 From: Matthew Waltz Date: Tue, 3 Feb 2026 21:39:52 -0700 Subject: [PATCH 8/8] Fix decompression test --- test/graphx/background_lz4/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/graphx/background_lz4/src/main.c b/test/graphx/background_lz4/src/main.c index 025080418..bc998945a 100644 --- a/test/graphx/background_lz4/src/main.c +++ b/test/graphx/background_lz4/src/main.c @@ -16,7 +16,7 @@ int main(void) gfx_ZeroScreen(); - if (lz4_Decompress_Block(gfx_vram, background_compressed + sizeof(uint24_t), background_compressed_size) != background_size) + if (lz4_Decompress_Block(gfx_vram, background_compressed + sizeof(uint24_t), background_compressed_size - sizeof(uint24_t)) != background_size) { gfx_ZeroScreen(); }