'
'
' CRACK ART 'CA_UNPACK'
'
' Dekompressionsroutine fr CA?-Bilder
'
' ½ Detlef R”ttger & Jan Borchers 1989-91
'
'
INLINE ca_unpack%,288
'
resolution&=XBIOS(4)                            ! Aufl”sung holen
IF resolution&>2                                ! keine ST-Aufl”sung
  END
ENDIF
'
DO
  fpath$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\*.CA"+CHR$(resolution&+49)
  FILESELECT #"LOAD CA",fpath$,"",fname$        ! File ausw„hlen
  CLS
  IF EXIST(fname$)=FALSE                        ! File nicht existent oder Abbruch
    END
  ENDIF
  '
  RESERVE 64000
  '
  OPEN "I",#1,fname$                            ! File ”ffnen
  buffer%=MALLOC(LOF(#1))                       ! Buffer reservieren
  CLOSE #1
  '
  IF buffer%<>0
    BLOAD fname$,buffer%                        ! Bild laden
    '
    IF DPEEK(buffer%)<>&H4341                   ! 'CA'-Kennung checken
      PRINT "Kein CA-Bild! (Abbruch)"
    ELSE
      IF PEEK(buffer%+3)<>resolution&           ! Aufl”sung checken
        PRINT "Falsche Aufl”sung! (Abbruch)"
      ELSE
        '
        SELECT resolution&
        CASE 0                                          ! Low Res
          ~XBIOS(6,L:buffer%+4)                           ! Farben setzen
          offset%=36                                    ! Image-Beginn
        CASE 1                                          ! Med Res
          ~XBIOS(6,L:buffer%+4)
          offset%=12
        CASE 2                                          ! High Res
          ' Monochrombilder besitzen keine Farbpalette
          offset%=4
        ENDSELECT
        '
        HIDEM
        IF PEEK(buffer%+2)=0                            ! Bild ungepackt
          BMOVE buffer%+offset%,XBIOS(2),32000
        ELSE                                            ! Bild gepackt
          ~C:ca_unpack%(L:buffer%+offset%,L:XBIOS(2))   ! Image Auspacken
        ENDIF
        SHOWM
        '
      ENDIF
    ENDIF
    '
    ~MFREE(buffer%)                     ! Speicher wieder freigeben
  ENDIF
  RESERVE
  '
  WHILE MOUSEK
  WEND
  REPEAT
  UNTIL MOUSEK
LOOP
