~aleteoryx/mtg-pac

0fd560cb0fcf9d7f69b026999cb22a17b683afd0 — Aleteoryx 3 months ago c3fbdf7
damn thing works
2 files changed, 4 insertions(+), 21 deletions(-)

M extract.tcl
M pvrt.tcl
M extract.tcl => extract.tcl +3 -3
@@ 1,6 1,7 @@
#!/bin/env tclsh

#proc pvr2png
set file [dict get [info frame 0] file]
source [file dirname $file]/pvrt.tcl

proc fatal {num reason} {
	global argv0


@@ 54,7 55,7 @@ foreach endpt $endtab {
		set magic [string range $decom 0 3]
		if {$magic in {GBIX PVRT}} {
			set ext pvr
			puts "${file}: record $id (decompressed): PVRT Image Data"
			puts "${file}: record $id (decompressed): Sega PowerVR Texture"
		} else {
			set ext bin
			binary scan $type i tynum


@@ 80,7 81,6 @@ foreach endpt $endtab {
	}
	NJTL {
		puts "${file}: record $id: Ninja Texture List"
		puts "${filebase}.njcm"
		set fp2 [open ${filebase}.njtl wb]
		puts $fp2 $data
		close $fp2

M pvrt.tcl => pvrt.tcl +1 -18
@@ 213,15 213,10 @@ proc ::pvrt2tga::convert {src dst} {
	set srcbuf [read $sfp [expr {$len - 8}]]
	set dstbuf [lrepeat [expr {$w * $h * 4}] 0]

	if {$dfmt != 4} {
		close $sfp
		return
	}

	set pdec [pfmt::lookup $pfmt]
	set ddec [dfmt::lookup $dfmt]

	puts "$src $dst $pdec $ddec $w $h"
#	puts "$src $dst $pdec $ddec $w $h"

	$ddec $pdec srcbuf dstbuf $w $h



@@ 232,15 227,3 @@ proc ::pvrt2tga::convert {src dst} {

	close $sfp
}

# pvrt2tga::convert ./unpacs/GAME/NOWLOAD/0000.pvr ./unpacs/GAME/NOWLOAD/0000.tga

set dirs .
while {$dirs != ""} {
	set dirs [lassign $dirs dir]
	set dirs [concat $dirs [glob -nocomplain -directory $dir */]]

	foreach file [glob -nocomplain -directory $dir *.pvr] {
		pvrt2tga::convert $file [file rootname $file].tga
	}
}