atarionline / starekino

6 stars 2 forks source link

sprite tools #8

Open atarionline opened 4 years ago

atarionline commented 4 years ago

Postanowiłem dodać nowe sprajty do gry, niestety nie mając pojęcia jak to zrobić, i nieudanych poszukiwaniach jak sprite sheet przerobic na atari polish sprajty, oto co wykombinowalem. Ps. Próbowalem uzyc programu bociana a falusoidalnej nazwie ale nie chcial w sensowny sposób wczytywac zadnych plikow graficznych ...

1) za pomocą: https://www.dcode.fr/binary-image przerobic png na binarke. 2) sklecilem skrypt w browser console aby isc po najmniejszej lini oporu:

var str = 0000000000000000000000000000000000000000000000000001111100000000 0000000000000000000000000000000000000000000000000001111111000000 0000000000000000000000000000000000000000000000000001111111000000 0000000000000000000000000000110000000000000000000000111111101100 0000000000001100111100001111101000000000000011001111011111111010 1111000011111010011111111111111011110000111110100111111111111110 0111111111111110000011111111111101111111111111100000111111111111 0000111111111111000001111111000000001111111111110000001111110000 0000001111111000000001111000000000000011111110000000001111000000 0000011111110000000000000000000000000111111100000000000100000000 0000111111000000000000000000000000001111110000000000000010000000 0000111100000000000000000000000000001111000000000000000000000000;

var alldata = str.split('\n'); var allresults = []; var spritename = 'reel'; var spritelength=2; var allresultstring = ""; alldata.forEach((el,idx)=>{ var line = el.split(''); var singlespritescount = line.length/8; var allresultsline = []; for (i = 0; i < singlespritescount; i++) { var celem = i*8; var intarr = line.map((sel)=>{return parseInt(sel)}) var spriteline = [...intarr].slice(celem, celem+8); var spritelinereversed = spriteline.reverse(); var hexa = parseInt(parseInt(spritelinereversed.join('')), 2).toString(16).toUpperCase(); allresultsline.push(hexa); } allresults.push(allresultsline) })

var rowcount = allresults[0].length; console.log(allresults)

for (i = 0; i < rowcount; i++) { var tmpdata = [];
allresults.forEach((el,idx)=>{ var fulldigit = el[i].length==1?'0'+el[i]:el[i]; tmpdata.push('$'+''+fulldigit); var frameindex = idx; //console.log(bstr+estr); }) var playerindex = (i%spritelength)==1?0:1; frameindex = (Math.floor(i/spritelength))+1; allresultstring += ${spritename}_p${playerindex}Frame${frameindex} : array[0.._HEIGHT - 1] of byte = (+tmpdata.join(',')+);\n; } console.log(allresultstring);

3) wrzucilem wygenerowany sprite do kodu generujacego sprajty w mad pascalu. Wyniki w sikorka.pas

Prosze napisac co poprawic.