;Exomizer 3 Z80 decoder ;Copyright (C) 2008-2018 by Jaime Tejedor Gomez (Metalbrain) ; ;Optimized by Antonio Villena and Urusergi ; ;Compression algorithm by Magnus Lind ; exomizer raw -P15 -T1 ; ; This depacker is free software; you can redistribute it and/or ; modify it under the terms of the GNU Lesser General Public ; License as published by the Free Software Foundation; either ; version 2.1 of the License, or (at your option) any later version. ; ; This library is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ; Lesser General Public License for more details. ; ; You should have received a copy of the GNU Lesser General Public ; License along with this library; if not, write to the Free Software ; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ; ; mapbase low byte must $00 xor a ld a, 128 ld iyl, 240 ld b, 52 push de init ld c, 16 jr nz, get4 ld de, 1 ld ixl, c defb 218 gb4 ld a, (hl) inc hl get4 adc a, a jr z, gb4 rl c jr nc, get4 ld iyh, mapbase/256 ex af, af' ld a, c rrca inc a ld (iy+0), a jr nc, get5 xor 136 get5 push hl ld hl, 1 defb 56 setbit add hl, hl dec a jr nz, setbit ex af, af' inc iyh ld (iy+0), e inc iyh ld (iy+0), d add hl, de ex de, hl inc iyl pop hl dec ixl djnz init pop de litcop ldi mloop add a, a jr z, gbm jr c, litcop gbmc ld bc, mapbase+240 add a, a jr z, gbi2 jr c, gbic getind add a, a jr z, gbi geti2 inc c jr nc, getind ret z gbic and a push de ex af, af' ld a, (bc) ld b, a ex af, af' ld de, 0 dec b call nz, getbits ex af, af' ld b, (mapbase/256)+1 ld a, (bc) inc b add a, e ld e, a ld a, (bc) adc a, d ld d, a push de ld bc, 512+32 dec e jr z, goit dec e ld bc, 1024+16 jr z, goit ld c, 0 ld e, c goit ld d, e ex af, af' call lee8 ex af, af' ld a, e add a, c ld c, a ld e, d ld b, mapbase/256 ld a, (bc) ld b, a ex af, af' dec b call nz, getbits ex af, af' ld b, (mapbase/256)+1 ld a, (bc) inc b add a, e ld e, a ld a, (bc) adc a, d ld d, a ex af, af' pop bc ex (sp), hl push hl sbc hl, de pop de ldir pop hl jp mloop gbi ld a, (hl) inc hl adc a, a jr nc, geti2 inc c jp nz, gbic ret gbi2 ld a, (hl) inc hl adc a, a jr nc, getind jp gbic gbm ld a, (hl) inc hl adc a, a jr nc, gbmc jp litcop getbits jp p, lee8 res 7, b dec b jp m, gby inc b defb $fa xopy ld a, (hl) inc hl lee16 adc a, a jr z, xopy rl d djnz lee16 gby ld e, (hl) inc hl ret copy ld a, (hl) inc hl lee8 adc a, a jr z, copy rl e djnz lee8 ret