CPC Rulez
https://cpcrulez.fr/forum/

Cruncher UPKR
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=7285
Page 1 sur 1

Auteur :  velus [ 26 Fév 2026, 16:17 ]
Sujet du message :  Cruncher UPKR

J'ai découvert ce compacteur, il a l'air assez performant,
il y a bien des routines z80 de decrunching
mais je n'arrive a rien en l'insérant dans Winape
quelqu'un sait-il m'aider pour la routine de décompactage ?



https://github.com/exoticorn/upkr/releases/tag/v0.2.0

Auteur :  hERMOL [ 26 Fév 2026, 22:48 ]
Sujet du message :  Re: Cruncher UPKR

Pas mal celui-la! Le binaire de Boulder Dash passe a #262B octets, contre #29B2 pour zx0 :JC_doubleup:

Auteur :  hERMOL [ 27 Fév 2026, 10:27 ]
Sujet du message :  Re: Cruncher UPKR

a quoi corresponds ces instructions:
Code :
  ; ** reset probs to 0x80, also reset HL (state) to zero, and set BC to probs+context 0
    ld      hl,probs.c>>1
    ld      bc,probs.e


Code :
    ; reserve space for probs array without emitting any machine code (using only EQU)

    IFDEF UPKR_PROBS_ORIGIN     ; if specific address is defined by user, move probs array there
probs:      EQU ((UPKR_PROBS_ORIGIN) + 255) & -$100     ; probs array aligned to 256
    ELSE
probs:      EQU ($ + 255) & -$100                       ; probs array aligned to 256
    ENDIF
.real_c:    EQU 1 + 255 + 1 + 2*NUMBER_BITS             ; real size of probs array
.c:         EQU (.real_c + 1) & -2                      ; padding to even size (required by init code)
.e:         EQU probs + .c


la compilation sous "sjasmplus-1.21.1", donne:

Code :
   ld hl,#00A0      ;;ld      hl,probs.c>>1 
   ld bc,#0240   ;;ld      bc,probs.e     

Auteur :  velus [ 27 Fév 2026, 11:19 ]
Sujet du message :  Re: Cruncher UPKR

As tu réussi à faire le fichier asm ou du moins le compiler ?

Auteur :  hERMOL [ 27 Fév 2026, 11:50 ]
Sujet du message :  Re: Cruncher UPKR

Non fonctionnel, je compil avec sjasmplus en bin , puis dans un second temps j'unasm pour winape. Je te donne un lien en msg pv...

avec SjASMPlus Z80 Cross-Assembler v1.21.1 (https://github.com/z00m128/sjasmplus)

ca ce compil en ORG #0000

sjasmplus.exe unpack.asm --msg=err --raw=unpack.bin

Auteur :  JMB [ 28 Fév 2026, 01:21 ]
Sujet du message :  Re: Cruncher UPKR

Intéressant! J'ai modifié la source pour qu'il tourne sous WinAPE. J'ai des gains importants sur les fichiers Image. Par contre la décompression est vraiment lente :sigh:
Ca marche seulement quand le Firmware est désactivé.
Apparement, on peut pas l'utiliser sous BASIC, même en sauvegardant le 2ème set de registres, et en désactivant les interruptions avant de lancer la décompression.
Ou plutôt, ca va marcher mais faire un beau reset au moment de retourner au BASIC. Peut-être parce que les interruptions ont été désactivées trop longtemps?

Code :
org &1100
;;Charge le fichier compresse en 2000h
ld hl,Filename
ld b,10
call &bc77
ld hl,&2000
call &bc83
call &bc7A
;;Decompression
di
ld ix,&2000   ;;Source
exx
push hl:push de:push bc
ld de,&C000   ;;Destination
exx
call &1000   ;;Decompression
exx
pop bc:pop de:pop hl
exx
ei:ret
Filename DB "SCREEN.UPK"


A suivre! Merci pour l'info :)

Auteur :  hERMOL [ 28 Fév 2026, 02:21 ]
Sujet du message :  Re: Cruncher UPKR

Excellent!!! 1000*thk

Auteur :  JMB [ 28 Fév 2026, 09:40 ]
Sujet du message :  Re: Cruncher UPKR

Ah, bonne nouvelle : ça marche avec le BASIC. Je me suis fait avoir, car j'avais placé mon Loader à l'adresse 1100h, mais ça tombait dans la zone de données utilisée par le décompresseur.
Si on déplace le loader en 1800h par exemple, plus de soucis.
Il faut se méfier, car il y a un buffer de données crée juste après le décompresseur (appelé Probs), qui fait une taille de 400 octets environ.
Mais on peut le déplacer à l'adresse que l'on veut en définissant une variable UPKR_PROBS_ORIGIN

Auteur :  velus [ 28 Fév 2026, 13:41 ]
Sujet du message :  Re: Cruncher UPKR

Ca ne fonctionne pas chez moi :(

Quels sont les parametres pour comprimer avec upkr

UPKR -B nom.bin

UPKR - ?

Auteur :  JMB [ 28 Fév 2026, 14:04 ]
Sujet du message :  Re: Cruncher UPKR

Pour compresser, rien de plus simple! L'auteur a crée un méta-paramètre --z80 qui combine différents paramètres.
Il suffit de taper: UPKR --z80 "c:\My path\Filename.bin"
Ne pas oublier d'ajouter un header au fichier avant de le déplacer vers un DSK !

Auteur :  velus [ 28 Fév 2026, 17:57 ]
Sujet du message :  Re: Cruncher UPKR

Ca ne va pas mieux aaaarghh !!!!
voici mes fichiers J'ai bien fait upkr --z80 pen.bin
image en &2000 routine &1000 call &1000
quelqu'un sait-il me dire ou est le problème ? Merci
j'ai 1 pixel d affiché

Auteur :  JMB [ 01 Mars 2026, 01:33 ]
Sujet du message :  Re: Cruncher UPKR

Ca marche! Compressé à 4894 octets, contre 5920 avec ZX0 :o
Tu peux accélérer la décompression en décommentant la ligne ;;UPKR_UNPACK_SPEED EQU 1
Ca déroule une boucle de 8 multiplications, mais on sent pas vraiment la différence...

Auteur :  velus [ 01 Mars 2026, 10:42 ]
Sujet du message :  Re: Cruncher UPKR

Youpie impec merci

Auteur :  markerror [ 01 Mars 2026, 19:45 ]
Sujet du message :  Re: Cruncher UPKR

Bonsoir,

Merci pour avoir défriché le terrain :-). Ce "nouveau" packer est efficace en terme de compression (mieux qu'Exomizer), mais il est très (trop) lent à la décompression. J'ai un peu de mal du coup à voir quel pourrait être son usage, si ce n'est vouloir à tout pris gratter quelques kilos sur une disquette, au prix de temps d'attente digne d'un chargement cassette :-).

A noter que l'optimisation n'est pas si anodine que cela (sur mon fichier d'exemple, on gagne quand même pas loin de 20%, mais ça reste très très lent.

Auteur :  marcel [ 01 Mars 2026, 22:38 ]
Sujet du message :  Re: Cruncher UPKR

markerror a écrit :
Bonsoir,

Merci pour avoir défriché le terrain :-). Ce "nouveau" packer est efficace en terme de compression (mieux qu'Exomizer), mais il est très (trop) lent à la décompression. J'ai un peu de mal du coup à voir quel pourrait être son usage, si ce n'est vouloir à tout pris gratter quelques kilos sur une disquette, au prix de temps d'attente digne d'un chargement cassette :-).

A noter que l'optimisation n'est pas si anodine que cela (sur mon fichier d'exemple, on gagne quand même pas loin de 20%, mais ça reste très très lent.


Ça peut être intéressant sur des petits fichiers (si jamais le ratio demeure), ou pour ceux habitués à la lenteur des K7 :P

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/