Affichage d'images TNY compressées
3 participants
GFA :: Programmation :: Utilitaires
Page 1 sur 1
Affichage d'images TNY compressées
Affichage d'images TNY compressées.
Le programme n'est pas de moi mais je l'ai utilisé plusieurs fois en son temps.
Je vous propose les divers listings et son compacteur [url=Affichage d'images TNY compress%C3%A9es]ici[/url]
Le programme n'est pas de moi mais je l'ai utilisé plusieurs fois en son temps.
Je vous propose les divers listings et son compacteur [url=Affichage d'images TNY compress%C3%A9es]ici[/url]
- Code:
' ******************************************************************
' * *
' * VISUALISATION D'IMAGES AU FORMAT TINY V-2 *
' * *
' * PAONE jean francois *
' * OCTOBRE 87 *
' * *
' ******************************************************************
'
' --------------------------------------sauvegarde de la palette + resolution
SETCOLOR 0,0,0,0
SETCOLOR 1,0,0,0
a$="CHARGEMENT"
b$="EN"
c$="COURS"
DEFTEXT 2,16,0,26
TEXT 70,50,a$
TEXT 140,100,b$
TEXT 115,150,c$
FOR i=1 TO 7
SETCOLOR 1,i,i,0
PAUSE 6
NEXT i
a$=""
b$=a$
c$=a$
c$=MKI$(0)+MKI$(1911)+MKI$(0)+MKI$(0)+MKI$(&H700)+MKI$(&H740)+MKI$(&H760)+MKI$(&H570)+MKI$(&H70)+MKI$(&H62)+MKI$(&H55)+MKI$(&H46)+MKI$(&H37)+MKI$(&H307)+MKI$(&H407)+MKI$(&H505)
pal$=""
FOR i%=0 TO 15
pal$=pal$+CHR$(PEEK(&HFFFF8240+i%))
NEXT i%
'
res_ecran%=XBIOS(4)
'
HIDEM
'
' --------------------------------------programme principal
fic$="G:\LG\LG_SOFT.TNY"
@affich_tny(fic$+".tny")
DO
FOR i%=4 TO 15
SETCOLOR i%,DPEEK((V:c$)+8+((((i%-4)+n%) MOD 12)*2))
NEXT i%
INC n%
PAUSE 2
EXIT IF MOUSEK<>0
LOOP
'
' --------------------------------------restauration des parametres de l'ecran
VOID XBIOS(5,L:-1,L:-1,res_ecran%)
' VOID XBIOS(6,L:VARPTR(pal$))
EDIT
'
'
PROCEDURE affich_tny(fic$)
'
' ------------------------------------dimensionnement tableaux
DIM bloc1%(100,100)
DIM bloc2%(100,100)
ecr_dup$=STRING$(32000," ")
'
' ------------------------------------test de l'existence du fichier.tny
IF EXIST(fic$)=FALSE
ALERT 3,"| FICHIER| INTROUVABLE",1,"RETURN",dummy%
GOTO fin
ENDIF
'
' ------------------------------------preparation de la lecture du fichier
OPEN "i",#1,fic$
'
' ------------------------------------lecture de la resolution de l'image
res_fic%=INP(#1)
IF res_fic%>2
FOR i%=1 TO 4
a%=INP(#1)
NEXT i%
ENDIF
' ------------------------------------lecture de la palette de l'image
pal_fic$=""
FOR i%=1 TO 32
pal_fic$=pal_fic$+CHR$(INP(#1))
NEXT i%
'
' ------------------------------------lecture longueur bloc donnees ø1
lg1%=INP(#1)*256+INP(#1)
'
' ------------------------------------lecture longueur bloc donnees ø2
lg2%=INP(#1)*256+INP(#1)
'
' ------------------------------------lecture du bloc de donnees ø1
adr_bloc1%=VARPTR(bloc1%(0,0))
BGET #1,adr_bloc1%,lg1%
'
' ------------------------------------lecture du bloc de donnees ø2
adr_bloc2%=VARPTR(bloc2%(0,0))
BGET #1,adr_bloc2%,2*lg2%
'
' ------------------------------------verification du format tny
IF lg2%*2+lg1%+37-4*(res_fic%>2)<>LOF(#1)
ALERT 3,"| LE FICHIER N'EST PAS AU| FORMAT TINY",1,"RETURN",dummy%
GOTO fin
ENDIF
'
CLOSE #1
'
IF res_fic%>2
SUB res_fic%,3
ENDIF
'
'
' *************************************************************************
' * debut du traitement de l'image TNY *
' *************************************************************************
'
' --------------------------initialisation des variables
d0%=0
d3%=0
a2%=adr_bloc1%
a3%=VARPTR(ecr_dup$)
d2%=adr_bloc2%
'
' --------------------------calcul des parametres de la trame
WHILE d3%<>lg1%
'
d1%=PEEK(a2%+d3%)
IF d1%>1
INC d3%
IF d1%>127
d1%=d1%-256
ENDIF
ELSE
a0%=a2%+d3%+1
z%=PEEK(a0%)*256+PEEK(a0%+1)
ADD d3%,3
IF d1%=1
d1%=-z%
ELSE
d1%=z%
ENDIF
ENDIF
'
' ------------------------affichage de la trame
IF d1%>=0
REPEAT
DPOKE (a3%+d0%),DPEEK(d2%)
@suite
DEC d1%
UNTIL d1%=0
ADD d2%,2
ELSE
REPEAT
DPOKE (a3%+d0%),DPEEK(d2%)
ADD d2%,2
@suite
INC d1%
UNTIL d1%=0
ENDIF
'
WEND
'
' *************************************************************************
' * fin du traitement de l'image TNY *
' *************************************************************************
'
' ------------------------affichage de l'image
VOID XBIOS(6,L:VARPTR(pal_fic$))
VOID XBIOS(5,L:-1,L:-1,res_fic%)
BMOVE VARPTR(ecr_dup$),XBIOS(2),32000
'
' ------------------------attente de la pression d'une touche
'
' ------------------------fin de la procedure AFFICH_TNY
fin:
ERASE bloc1%()
ERASE bloc2%()
'
RETURN
'
'
PROCEDURE suite
ADD d0%,&HA0
IF d0%>=&H7D00
SUB d0%,&H7CF8
IF d0%>=&HA0
SUB d0%,&H9E
ENDIF
ENDIF
RETURN
Re: Affichage d'images TNY compressées
Belle explication du format TNY, mais ça ne doit être bien rapide en Basic
rockyone- Messages : 68
Date d'inscription : 14/01/2018
Localisation : Hauterives
Re: Affichage d'images TNY compressées
Après il faut voir ce que ça donne en GFA compilé !
Shadow, tu as une idée du ratio de compression ?
Le gain pour une image plein écran (par ex.) ça donne quoi ?
Shadow, tu as une idée du ratio de compression ?
Le gain pour une image plein écran (par ex.) ça donne quoi ?
Re: Affichage d'images TNY compressées
Le gain n'est pas mauvais mais il y a mieux et plus rapide à la décompression (environ 1/2 seconde compilé ou non grâce à une routine ASM).
Je mettrai ça ce WE.
Je mettrai ça ce WE.
Re: Affichage d'images TNY compressées
temps de décompression en assembleur : 0.08 à 0.225 seconde pour les trois résolutions
rockyone- Messages : 68
Date d'inscription : 14/01/2018
Localisation : Hauterives
Re: Affichage d'images TNY compressées
Ok en assembler mais la plupart des participants au forum ne font probablement pas de l'assembler (c'est mon cas ) .
GFA :: Programmation :: Utilitaires
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum