### 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