shithub: sce

ref: 785ecb8bfe4bb0bdce98b43aa2c57037150c74f4
dir: /utils/scefix/

View raw version
#!/bin/rc
rfork n

fn terrain{
	name=$1
	shift
	echo $name `{ls $name^.*.bit | wc -l} |\
		awk '
{
	n = int($2)
	print "!s", 32, 32*n
	print "r = z == 0 ? 0 : Z"
	for(i=0; i<n; i++){
		printf "!r %s.%05d.bit a\n", $1, i+1
		print "r = y >= 32*" i " && y < 32*" i+1 " ? a[x,y-32*" i "] : r"
	}
	print "!w r /tmp/a.bit"
}
' >/env/fuckrc
	$home/p/pico/pico </env/fuckrc
	iconv -c r8g8b8 /tmp/a.bit >$name^.bit
	rm /tmp/a.bit $name^.*.bit
}

fn sprsheet{
	name=$1
	frm=$2
	rot=$3
	dim=`{read -c 72 $name^1.$frm.$rot.bit | awk 'NR>1{print $2, $3, $4, $5}'}
	x1=$dim(1)
	y1=$dim(2)
	x2=$dim(3)
	y2=$dim(4)
	dy=`{echo $y2-$y1 | pc -n}
	crop -b 0 255 255 -r $x1 $y1 $x2 \
		`{echo $y1^'+'^$dy^'*8' | pc -n} \
		$name^1.$frm.$rot.bit >/tmp/a.bit
	sed 's/NAME/'^$name^'/g;s/FRM/'^$frm^'/g;s/ROT/'^$rot^'/g;s/DY/'^$dy^'/g' \
		/env/fuckrc >/env/forever
	</env/forever $home/p/pico/pico
	iconv -c r8g8b8 /tmp/b.bit |\
		crop -t $x1 $y1 \
		>$name.$frm.$rot.bit
	mv $name^s.$frm.$rot.bit $name.$frm.$rot.s.bit
	rm /tmp/b.bit
}

fn gen32{
	name=$1
	shift
	for(frm in $*){
		for(rot in 00 02 04 06 08 10 12 14 16 17 19 21 23 25 27 29 31)
			sprsheet $name $frm $rot
		rm $name^?.$frm.*.bit
	}
	rm /tmp/a.bit
}

fn gen1{
	name=$1
	shift
	for(frm in $*){
		sprsheet $name $frm 00
		rm $name^?.$frm.*.bit
	}
	rm /tmp/a.bit
}

fn clean{
	for(rot in 01 03 05 07 09 11 13 15 18 20 22 24 26 28 30)
		rm $1^.??.^$rot^.bit
}

fn rename{
	if(! ~ $3 '')
		suf=';s/\.bit/.'^$3^'&/'
	if not
		suf=''
	for(i in $1^.*)
		mv $i `{echo $i | sed 's/'^$1^'/'^$2^'/'^$suf}
}

fn translate{
	crop -t $2 $3 $1 > a && mv a $1
}

cat <<! >/env/fuckrc
!r /tmp/a.bit a
r = a
!r NAME2.FRM.ROT.bit b
r = y >= DY*1 && y < DY*2 ? b[x,y-DY*1] : r
!r NAME3.FRM.ROT.bit b
r = y >= DY*2 && y < DY*3 ? b[x,y-DY*2] : r
!r NAME4.FRM.ROT.bit b
r = y >= DY*3 && y < DY*4 ? b[x,y-DY*3] : r
!r NAME5.FRM.ROT.bit b
r = y >= DY*4 && y < DY*5 ? b[x,y-DY*4] : r
!r NAME6.FRM.ROT.bit b
r = y >= DY*5 && y < DY*6 ? b[x,y-DY*5] : r
!r NAME7.FRM.ROT.bit b
r = y >= DY*6 && y < DY*7 ? b[x,y-DY*6] : r
!r NAME8.FRM.ROT.bit b
r = y >= DY*7 && y < DY*8 ? b[x,y-DY*7] : r
!w r /tmp/b.bit
!

gen32 scv 00
gen32 drone 00 01 02 03 04
gen32 mutalid 00 01 02 03 04
clean tscglow
rename tscglow scv g
gen1 control 00
gen1 hatchery 00 01 02 03
terrain badlands

crop -t -1 0 drone.00.23.bit > a && mv a drone.00.23.bit
crop -t -1 0 drone.00.23.s.bit > a && mv a drone.00.23.s.bit
crop -t 1 0 drone.03.23.bit > a && mv a drone.03.23.bit
crop -t 1 0 drone.03.23.s.bit > a && mv a drone.03.23.s.bit
crop -t -3 0 drone.04.23.bit > a && mv a drone.04.23.bit
crop -t -3 0 drone.04.23.s.bit > a && mv a drone.04.23.s.bit
for(i in 00 01 02 03){
	translate scv.$i.17.g.bit 26 0
	translate scv.$i.19.g.bit 30 0
	translate scv.$i.21.g.bit 28 0
	translate scv.$i.23.g.bit 23 0
	translate scv.$i.25.g.bit 25 0
	translate scv.$i.27.g.bit 21 0
	translate scv.$i.29.g.bit 14 0
}