Fájlformátumok

KEP | SPRITE | RW4 | VID

*.KEP


        0. bájt: 'K'
        1. bájt: 'E'
        2. bájt: 'P'
        3. bájt: kép típusa:
                    7..4 bit: 0000b (fenntartott)
                    3..2 bit: tömörítés (00b- fenntartott  01b- RLE tömörített  10b- tömörítetlen  11b- fenntartott)
                    1..0 bit: videó mód (00b- 2 színű  01b- 4 színű  10b- 16 színű  11b- interlaced)
        4. bájt: paletta[0]
        5. bájt: paletta[1]
        6. bájt: paletta[2]
        7. bájt: paletta[3]
        8. bájt: X méret pixelben (alsó bájt)
        9. bájt: X méret pixelben (felső bájt)
       10. bájt: Y méret pixelben (alsó bájt)
       11. bájt: Y méret pixelben (felső bájt)
       12. bájt: 0 (fenntartott)
       13. bájt: 0 (fenntartott)
       14. bájt: 0 (fenntartott)
       15. bájt: 0 (fenntartott)

      16.. képadatok:
           - tömörítetlen mód esetén: soronként tárolt képbájtok
                vízszintes bájtszám = [(pixelben adott X méret)/(bájtonkénti pixelszám)] felkerekítve bájthatárra
                függőleges bájtszám = Y méret
                
                adatbájtok száma = vízszintes bájtszám * függőleges bájtszám
       
           - RLE (futási hossz) tömörítésnél a tömörített adatblokk a sor végéig tart (bájhatárra felkerekítve), majd új tömörített blokk kezdődik
               0. bájt: számláló értéke, ha a 7..6 bit = maszk , egyébként közvetlen képbájt
               1. bájt: ismétlendő képbájt, ha az előző bájt számlálóértéket tartalmazott
               
               induláskor maszk=0, majd maszk növelése 64-el, ha a számláló érték=1
               
               pl.:  tömörítetlen képbájtok:  KKKKLLLLLCDGVKAACCCCCC
                     RLE tömörített:          4*K 5*L CDGVK 2*A 6*C

Sprite


       Egyszerű sprite:
        0. bájt: X méret bájtban
        1. bájt: Y méret bájtban
        2. bájttól képadatok: n = X méret * Y méret
       
       Háttérmaszkos sprite:
        0. bájt: képadatok mérete (alsó bájt)
        1. bájt: képadatok mérete (felső bájt)
        2. bájt: X méret bájtban
        3. bájt: Y méret bájtban
        4. bájttól képadatok: n = X méret * Y méret
        n+4 bájttól háttérmaszk adatok: nháttérmaszk = X méret * Y méret
       
       Sprite-hoz tartozó paletta fájl (*.PAL):
        0. bájt: paletta[0]
        1. bájt: paletta[1]
        2. bájt: paletta[2]
        3. bájt: paletta[3]

*.RW4


        0. bájt: 'R'
        1. bájt: 'W'
        2. bájt: '4'
        3. bájt: típus (csak a 0 érték használt)
     4..5. bájt: pitch érték a mintavételi frekvenciához (0..4095)
    6..15. bájt: 0 (fenntartott)
    16..   PCM adatbájtok: egy adatbájt 2 PCM mintát tartalmaz:
                             7..4 bit: első    4 bites amplitúdó érték
                             3..0 bit: második 4 bites amplitúdó érték

*.VID


        0. bájt: 'V'
        1. bájt: 'I'
        2. bájt: 'D'
        3. bájt: kép típusa
                   7..4 bit: 0000b (fenntartott)
                   3..2 bit: tömörítés (00b- fenntartott  01b- RLE tömörített  10b- tömörítetlen  11b- fenntartott)
                   1..0 bit: videó mód (00b- 2 színű  01b- 4 színű  10b- 16 színű  11b- interlaced)
        4. bájt: paletta[0]
        5. bájt: paletta[1]
        6. bájt: paletta[2]
        7. bájt: paletta[3]
     8..9. bájt: X méret pixelben
   10..11. bájt: Y méret pixelben
   12..13. bájt: 0 (fenntartott)
   14..15. bájt: adatok relatív kezdete a fejléc után (jelenleg nem használt, fixen 512-16 = 496)
   16..19. bájt: frame-ek száma a fájlban
   20..23. bájt: frame-ek közötti idő us-ban megadva
   24..25. bájt: egy frame teljes mérete bájtokban
   26..27. bájt: hangminták kezdete a frame-en belül (max. 0x01FFF)
   28..29. bájt: egy frame-hez tartozó hangminták száma bájtban (minta/40ms)
  30..511. bájt: 0 (fenntartott)
  512..    frame adatok:
             - egy frame-en belül először a képadatok vannak letárolva, majd az adott frame idejére eső hangminták
             - a frame-ek fájlon belüli kezdete mindig 512 bájtos pozícióra igazított