Eu tenho um texto assim:
;---------------------------------------
JOURNEY_ARRAY_01
.BYTE <JOURNEY_00
.BYTE <JOURNEY_01
;---------------------------------------
JOURNEY_ARRAY_03
.BYTE JOURNEY_01-JOURNEY_00
.BYTE JOURNEY_02-JOURNEY_01
;---------------------------------------
JOURNEY_00 ; From 00 to 01
.BYTE $01, $01, $01, $03, $01, $01, $03, $01
.BYTE $03, $01, $03, $01, $03, $01, $03, $01
.BYTE $03, $03, $01, $03, $03, $03, $03, $00
.BYTE $03, $03, $00, $03, $00, $03, $00, $03
.BYTE $00, $03, $00, $03, $03, $00, $03, $03
.BYTE $00, $03, $03, $03, $03, $03, $03, $01
.BYTE $03, $03, $01, $03, $03, $01, $03
;---------------------------------------
JOURNEY_01 ; From 00 to 04
.BYTE $01, $01, $01, $03, $01, $01, $03, $01
.BYTE $03, $01, $03, $01, $03, $01, $03, $01
.BYTE $03, $03, $01, $03, $01, $03, $01, $01
.BYTE $03, $01, $03, $01, $01, $01, $01, $01
.BYTE $02, $01, $01, $01, $02, $01, $01, $01
.BYTE $02, $01, $01, $01, $01, $01, $01, $01
.BYTE $01, $01, $01
;---------------------------------------
Eu preciso pegar cada valor numérico depois de ".BYTE" e para cada 4 valores fazer isso:
- primeiro valor não faz nada;
- segundo valor multiplique * 4;
- terceiro valor multiplicar * 16;
- quarto valor multiplicar * 64;
some estes 4 valores e coloque o resultado, no formato hexadecimal prefixado com "$" em vez dos quatro valores originais.
Se os valores após ".BYTE" não forem multiplos de 4 ou forem menores que 4, os valores omissos deverão ser calculados como zeros.
Por exemplo:
.BYTE $01, $01, $01, $03, $01, $01, $03, $01
deve se tornar:
.BYTE $57, 5D
porque:
03*1 = 3 +
01*4 = 4 +
01*16 = 16 +
01*64 = 64 = 87 = $57
and
01*1 = 1 +
03*4 = 12 +
01*16 = 16 +
01*64 = 64 = 93 = $5D
Valores não apresentados devem ser calculados como zero nas matemáticas ...
Obviamente, outro texto não deve ser alterado.
Qualquer um?