ref: 6be6bc64459a8790b1e5020d61e482d0b1d7b84d
dir: /utils/genspr2/
#!/bin/rc -e rfork n bind -a $home/p/pico /bin bind -a $home/p/sce/utils /bin awk -v 'pid='$pid ' function pipe(cmd){ if((cmd | getline x) != 1){ print cmd ": aborted" exit("aborted") } return x } function exec(cmd){ if(system(cmd) != 0){ print cmd ": aborted" exit("aborted") } } function unit17(u, i, r, n, fi, fo, gf, dim, rect, Δx, Δy){ n = split(units[u], a) gf = u ".grp" split(pipe("grp -s " palfile " " gf), dim) for(i=4; i<=n; i++){ frm = a[i] * 17; for(r=0; r<17; r+=2){ fi = sprintf(gf ".%05d.bit", frm + r) fo = sprintf(u ".%02d.%02d.bit", frm, r) fs = sprintf(u ".%02d.%02d.s.bit", frm, r) split(pipe("read -c 60 " fi), rect) goff = -(dim[1] / 2 - a[1]) Δx = rect[2] + goff Δy = rect[3] + goff exec("scespr " fi " " fo " " Δx " " Δy); if(a[2] != "-") exec("sceshad " fi " " fs " " Δx+a[2] " " Δy+a[3] " " a[2] " " a[3]); if(r != 16){ exec("rotate -l " fi " >" tmp) Δx += dim[1] - rect[2] - rect[4] fo = sprintf(u ".%02d.%02d.bit", frm, 31-r) fs = sprintf(u ".%02d.%02d.s.bit", frm, 31-r) exec("scespr " tmp " " fo " " Δx " " Δy); if(a[2] != "-") exec("sceshad " tmp " " fs " " Δx+a[2] " " Δy+a[3] " " a[2] " " a[3]); } } } exec("rm -f " gf ".*bit") } BEGIN{ palfile = "SC_Unit_Palette.pal" tmp = "/tmp/genspr." pid units["scv"] = "11 0 7 0" units["drone"] = "11 0 7 0 1 2 3 4" units["mutalid"] = "22 0 42 0 1 2 3 4" for(u in units){ unit17(u) } } END{ exec("rm -f " tmp) } ' # FIXME: # - setup: grp files, pal, etc.; tmp workspace # . ramfs + window -m for monitoring # . copy to final destination on success # - tileset, buildings + shadows, asprite # - testing