From 7c9a47bfaa9b87d11f543fa98929b13329501846 Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Sun, 19 Aug 2018 00:22:24 +0200 Subject: [PATCH] add and use lzss decompressor, baku variant --- kernel.asm | 18 +++--- lz.asm | 2 +- lzss.baku.asm | 134 +++++++++++++++++++++++++++++++++++++++++++ lzss.baku.unsafe.asm | 123 +++++++++++++++++++++++++++++++++++++++ main.asm | 26 +++++++-- res/Image.baku.lzss | Bin 0 -> 126056 bytes 6 files changed, 287 insertions(+), 16 deletions(-) create mode 100644 lzss.baku.asm create mode 100644 lzss.baku.unsafe.asm create mode 100644 res/Image.baku.lzss diff --git a/kernel.asm b/kernel.asm index 61ad177..b8929f2 100644 --- a/kernel.asm +++ b/kernel.asm @@ -100,15 +100,15 @@ Drive64Done: nop nop - // try out an interrupt: - //sw r0, 0(r0) - mfc0 t1, CP0_Status - ori t1, 2 - mtc0 t1, CP0_Status - la t0, WipeRegisters - mtc0 t0, CP0_EPC - j InterruptHandler - nop +// // try out an interrupt: +// //sw r0, 0(r0) +// mfc0 t1, CP0_Status +// ori t1, 2 +// mtc0 t1, CP0_Status +// la t0, WipeRegisters +// mtc0 t0, CP0_EPC +// j InterruptHandler +// nop WipeRegisters: // load up most registers with a dummy value for debugging diff --git a/lz.asm b/lz.asm index 19f7868..eec2764 100644 --- a/lz.asm +++ b/lz.asm @@ -3,7 +3,7 @@ LZInit: la a0, LZ+4 // A0 = Source Address - lui a1, 0xA010 // A1 = Destination Address (DRAM Start Offset) + lui a1, 0x8010 // A1 = Destination Address (DRAM Start Offset) lbu t0, -1(a0) // T0 = HI Data Length Byte sll t0, 8 diff --git a/lzss.baku.asm b/lzss.baku.asm new file mode 100644 index 0000000..ec81ba1 --- /dev/null +++ b/lzss.baku.asm @@ -0,0 +1,134 @@ +LzDecomp: + // a0: pointer to compressed data (must be RDRAM, cart is unsupported) + // a1: compressed size + // a2: output pointer + // a3: maximum uncompressed size + // v0: error code (0 is OK) + + // t0: current pointer for reading + // t1: end pointer (exclusive) + // t2: current pointer for writing + // t3: end pointer (exclusive) + // t4: current code, shifted as necessary + // t5: 1 means raw, 0 means copy + // t6: either raw byte or part of copy command + // t7: current pseudo-position + // t8: match length + // t9: match position + + beqz a1, LzExit // nothing to decompress? nothing to do! + nop + + blez a3, LzNoSpace + nop + + or t0, a0, r0 + addu t1, a0, a1 + or t2, a2, r0 + addu t3, a2, a3 + + lli t7, 0x3BE + +LzNextCode: + // READ + lbu t4, 0(t0) + addiu t0, 1 + + ori t4, t4, 0x100 // add end marker + + andi t5, t4, 1 +LzReadCode: + beq t2, t3, LzReiterate + nop + + // READ + beq t0, t1, LzBadEnd + nop + lbu t6, 0(t0) + addiu t0, 1 + + beqz t5, LzCopy + nop + +LzRaw: + // WRITE + beq t2, t3, LzNoSpace + addiu t7, 1 + andi t7, t7, 0x3FF + sb t6, 0(t2) + addiu t2, 1 + + // SHIFT + srl t4, 1 + xori at, t4, 1 + bnez at, LzReadCode // branch if t4 != 1 + andi t5, t4, 1 + + b LzReiterate + nop + +LzCopy: + // READ + beq t0, t1, LzBadEnd + nop + lbu t8, 0(t0) + addiu t0, 1 + + // extract match position + sll t9, t8, 2 + andi t9, 0x0300 + or t9, t6 + + // extract and prepare match length + andi t8, 0x003F + addiu t8, 3 + + // prepare absolute match position + subu t9, t7, t9 + subiu t9, 1 + andi t9, 0x03FF + addiu t9, 1 + subu t9, t2, t9 + + // pre-emptively move psuedo-position ahead (don't need it for the loop) + addu t7, t8 + andi t7, t7, 0x3FF + +LzCopyLoop: + // repurposing t6: byte being copied + slt at, t9, a2 + bnez at,+ // don't copy bytes before the output pointer + lli t6, 0 // use nulls instead + lbu t6, 0(t9) ++ + + // WRITE + beq t2, t3, LzNoSpace + subiu t8, 1 + sb t6, 0(t2) + addiu t2, 1 + + bnez t8, LzCopyLoop + addiu t9, 1 + + // SHIFT + srl t4, 1 + xori at, t4, 1 + bnez at, LzReadCode // branch if t4 != 1 + andi t5, t4, 1 + +LzReiterate: + bne t0, t1, LzNextCode + nop + +LzExit: + jr ra + lli v0, 0 + +LzNoSpace: + jr ra + lli v0, 1 + +LzBadEnd: // aka Unexpected End Of File + jr ra + lli v0, 2 diff --git a/lzss.baku.unsafe.asm b/lzss.baku.unsafe.asm new file mode 100644 index 0000000..461fd9f --- /dev/null +++ b/lzss.baku.unsafe.asm @@ -0,0 +1,123 @@ +LzDecomp: + // a0: pointer to compressed data (must be RDRAM, cart is unsupported) + // a1: compressed size + // a2: output pointer + // a3: maximum uncompressed size + // v0: error code (0 is OK) + + // t0: current pointer for reading + // t1: end pointer (exclusive) + // t2: current pointer for writing + // t3: end pointer (exclusive) + // t4: current code, shifted as necessary + // t5: 1 means raw, 0 means copy + // t6: either raw byte or part of copy command + // t7: current pseudo-position + // t8: match length + // t9: match position + + beqz a1, LzExit // nothing to decompress? nothing to do! + lli v0, 0 + + blez a3, LzExit + lli v0, 1 + + or t0, a0, r0 + addu t1, a0, a1 + or t2, a2, r0 + addu t3, a2, a3 + + lli t7, 0x3BE + +LzNextCode: + // READ + lbu t4, 0(t0) + addiu t0, 1 + + ori t4, t4, 0x100 // add end marker + + andi t5, t4, 1 +LzReadCode: + beq t2, t3, LzExit + lli v0, 0 + + // READ + lbu t6, 0(t0) + addiu t0, 1 + + beqz t5, LzCopy + nop + +LzRaw: + // WRITE + addiu t7, 1 + andi t7, t7, 0x3FF + sb t6, 0(t2) + addiu t2, 1 + + // SHIFT + srl t4, 1 + xori at, t4, 1 + bnez at, LzReadCode // branch if t4 != 1 + andi t5, t4, 1 + + // reiterate + bne t0, t1, LzNextCode + nop + + b LzExit + lli v0, 0 + +LzCopy: + // READ + lbu t8, 0(t0) + addiu t0, 1 + + // extract match position + sll t9, t8, 2 + andi t9, 0x0300 + or t9, t6 + + // extract and prepare match length + andi t8, 0x003F + addiu t8, 3 + + // prepare absolute match position + subu t9, t7, t9 + subiu t9, 1 + andi t9, 0x03FF + addiu t9, 1 + subu t9, t2, t9 + + // pre-emptively move psuedo-position ahead (don't need it for the loop) + addu t7, t8 + andi t7, t7, 0x3FF + +LzCopyLoop: + // repurposing t6: byte being copied + lbu t6, 0(t9) + + // WRITE + subiu t8, 1 + sb t6, 0(t2) + addiu t2, 1 + + bnez t8, LzCopyLoop + addiu t9, 1 + + // SHIFT + srl t4, 1 + xori at, t4, 1 + bnez at, LzReadCode // branch if t4 != 1 + andi t5, t4, 1 + + // reiterate + bne t0, t1, LzNextCode + nop + + b LzExit + lli v0, 0 + +LzExit: + jr ra + nop diff --git a/main.asm b/main.asm index f4b9384..fe68512 100644 --- a/main.asm +++ b/main.asm @@ -27,17 +27,29 @@ Main: lui t0, K_BASE lui s0, BLAH_BASE - - mfc0 t0, CP0_Count mfc0 t1, CP0_Status+0 - sw t0, BLAH_COUNTS+0(s0) sw t1, 8(s0) -// decompress our picture -include "lz.asm" + nop; nop; nop; nop + mfc0 t0, CP0_Count + sw t0, BLAH_COUNTS+0(s0) + + // decompress our picture + la a0, LZ_BAKU + 4 + lw a3, -4(a0) // load uncompressed size from the file itself + li a1, LZ_BAKU.size - 4 + li a2, VIDEO_BUFFER | 0x80000000 + jal LzDecomp + nop + // TODO: flush cache on video buffer mfc0 t0, CP0_Count + nop; nop; nop; nop + + lw t1, BLAH_COUNTS+0(s0) sw t0, BLAH_COUNTS+8(s0) + subu t1, t0, t1 + sw t1, BLAH_COUNTS+0xC(s0) lui a0, BLAH_BASE lli a1, 0x20 @@ -150,8 +162,10 @@ PushRSPTask: jr ra nop +include "lzss.baku.unsafe.asm" + align(16); insert F3DZEX_BOOT, "bin/F3DZEX2.boot.bin" align(16); insert F3DZEX_DMEM, "bin/F3DZEX2.data.bin" align(16); insert F3DZEX_IMEM, "bin/F3DZEX2.bin" align(16); insert FONT, "res/dwarf.1bpp" -align(16); insert LZ, "res/Image.lz" +align(16); insert LZ_BAKU, "res/Image.baku.lzss" diff --git a/res/Image.baku.lzss b/res/Image.baku.lzss new file mode 100644 index 0000000000000000000000000000000000000000..e1a8efc0f91f8d03b935c19e43daffb0c1b6680b GIT binary patch literal 126056 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�ryRTA2^}y2V}QgCuxqf+`6%?=m0s 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 literal 0 HcmV?d00001