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