bocianu.atari.pl

asm2rle.py

Data wydania:27.02.2017

Pobierz: asm2rle.zip

Kod źródłowy: https://gitlab.com/bocianu/MadKingdom/blob/master/tools/asm2rle.py


Napisany na potrzeby Vox Regis kompresor do danych zapisanych w plikach asm. Pakuje on dane przy użyciu algorytmu RLE. Dla poprawnego działania dane powinny być umieszczone w pliku tekstowym, ułożone w blokach linii zaczynających się słowem dta. Tylko dane w takiej postaci zostaną skompresowane. Przykładowy plik wejściowy:

data.asm

frame
    dta $2B,$00,$00,$00,$00,$00,$00,$00,$00,$AC
    dta $A3,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$8F
    dta $80,$00,$00,$00,$00,$00,$00,$00,$00,$03
    dta $F3,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8F
    dta $23,$00,$00,$00,$00,$00,$00,$00,$00,$8C
    dta $A2,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$8F
    dta $80,$00,$00,$00,$00,$00,$00,$00,$00,$03
    dta $F3,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF
    dta $3F,$00,$00,$00,$00,$00,$00,$00,$00,$FC

logo
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$01,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$40,$00,$00,$00
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$05,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

W tym przykładzie dane zapisane są szesnastkowo, ale równie dobrze, mogą być one zapisane dziesiętnie.
Wywołanie programu:

python asm2rle.py data.asm > data_rle.asm

zawartość pliku po konwersji:

data_rle.asm

frame
; RLE compresed data. Size before 90 size after: 47
    dta $01,$2B,$0E,$00,$03,$AC,$A3,$0E,$AA,$03,$8F,$80,$0E,$00,$03,$03
    dta $F3,$0E,$FF,$03,$8F,$23,$0E,$00,$03,$8C,$A2,$0E,$AA,$03,$8F,$80
    dta $0E,$00,$03,$03,$F3,$0E,$FF,$03,$CF,$3F,$0E,$00,$01,$FC,$00
logo
; RLE compresed data. Size before 128 size after: 18
    dta $24,$00,$03,$01,$40,$4A,$00,$03,$01,$40,$4A,$00,$03,$05,$50,$34
    dta $00,$00
; END OF DATA
; RLE SAVED  153 bytes
; RLE DATA TOTAL SIZE:  65 bytes

Program do działania wymaga pythona w wersji 2.x