Add binary templates for unity sprites

This commit is contained in:
Tellow Krinkle
2019-07-20 22:16:03 +09:00
parent 58f0f6ebd9
commit 1d93d3e865
5 changed files with 359 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
# Binary Templates
Binary template files for more easily interpreting things in a hex editor
Ones with a `.tcl` extension are made for the MacOS editor [Hex Fiend](http://ridiculousfish.com/hexfiend/), though they should be a pretty good basis for anyone trying to make template files for other hex editors
`Unity5.#Sprite.tcl` files are templates for the modified Unity sprite files held in [`assets/files-5.*/SGCaret*_Sprite.dat`](../../assets)

View File

@@ -0,0 +1,79 @@
little_endian
proc align {size alignment} {
set extra [expr $size % $alignment]
set newExtra [expr $extra > 0 ? $alignment : 0]
return [expr $size - $extra + $newExtra]
}
proc alignPos {alignment} {
goto [align [pos] $alignment]
}
proc pptr {name} {
section $name {
int32 "m_FileID"
int64 "m_PathID"
}
}
proc rectf {name} {
section $name {
float "x"
float "y"
float "width"
float "height"
}
}
proc vector2f {name} {
section $name {
float "x"
float "y"
}
}
proc vector3f {name} {
section $name {
float "x"
float "y"
float "z"
}
}
proc vector4f {name} {
section $name {
float "x"
float "y"
float "z"
float "w"
}
}
set nameLen [uint32 "Name Length"]
str [align $nameLen 4] "utf8" "Name"
rectf "m_Rect"
vector2f "m_Offset"
vector4f "m_Border"
float "m_PixelsToUnits"
uint32 "m_Extrude"
section "m_RD" {
pptr "texture"
pptr "alphaTexture"
section "vertices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
vector3f "pos"
}
}
section "indices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
uint16 "data"
}
}
rectf "textureRect"
vector2f "textureRectOffset"
uint32 "settingsRaw"
vector4f "uvTransform"
}

View File

@@ -0,0 +1,81 @@
little_endian
proc align {size alignment} {
set extra [expr $size % $alignment]
set newExtra [expr $extra > 0 ? $alignment : 0]
return [expr $size - $extra + $newExtra]
}
proc alignPos {alignment} {
goto [align [pos] $alignment]
}
proc pptr {name} {
section $name {
int32 "m_FileID"
int64 "m_PathID"
}
}
proc rectf {name} {
section $name {
float "x"
float "y"
float "width"
float "height"
}
}
proc vector2f {name} {
section $name {
float "x"
float "y"
}
}
proc vector3f {name} {
section $name {
float "x"
float "y"
float "z"
}
}
proc vector4f {name} {
section $name {
float "x"
float "y"
float "z"
float "w"
}
}
set nameLen [uint32 "Name Length"]
str [align $nameLen 4] "utf8" "Name"
rectf "m_Rect"
vector2f "m_Offset"
vector4f "m_Border"
float "m_PixelsToUnits"
uint32 "m_Extrude"
uint8 "m_IsPolygon"
alignPos 4
section "m_RD" {
pptr "texture"
pptr "alphaTexture"
section "vertices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
vector3f "pos"
}
}
section "indices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
uint16 "data"
}
}
rectf "textureRect"
vector2f "textureRectOffset"
uint32 "settingsRaw"
vector4f "uvTransform"
}

View File

@@ -0,0 +1,83 @@
little_endian
proc align {size alignment} {
set extra [expr $size % $alignment]
set newExtra [expr $extra > 0 ? $alignment : 0]
return [expr $size - $extra + $newExtra]
}
proc alignPos {alignment} {
goto [align [pos] $alignment]
}
proc pptr {name} {
section $name {
int32 "m_FileID"
int64 "m_PathID"
}
}
proc rectf {name} {
section $name {
float "x"
float "y"
float "width"
float "height"
}
}
proc vector2f {name} {
section $name {
float "x"
float "y"
}
}
proc vector3f {name} {
section $name {
float "x"
float "y"
float "z"
}
}
proc vector4f {name} {
section $name {
float "x"
float "y"
float "z"
float "w"
}
}
set nameLen [uint32 "Name Length"]
str [align $nameLen 4] "utf8" "Name"
rectf "m_Rect"
vector2f "m_Offset"
vector4f "m_Border"
float "m_PixelsToUnits"
vector2f "m_Pivot"
uint32 "m_Extrude"
uint8 "m_IsPolygon"
alignPos 4
section "m_RD" {
pptr "texture"
pptr "alphaTexture"
section "vertices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
vector3f "pos"
}
}
section "indices" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
uint16 "data"
}
}
rectf "textureRect"
vector2f "textureRectOffset"
vector2f "Unknown"
uint32 "settingsRaw"
vector4f "uvTransform"
}

View File

@@ -0,0 +1,110 @@
little_endian
proc align {size alignment} {
set extra [expr $size % $alignment]
set newExtra [expr $extra > 0 ? $alignment : 0]
return [expr $size - $extra + $newExtra]
}
proc alignPos {alignment} {
goto [align [pos] $alignment]
}
proc pptr {name} {
section $name {
int32 "m_FileID"
int64 "m_PathID"
}
}
proc rectf {name} {
section $name {
float "x"
float "y"
float "width"
float "height"
}
}
proc vector2f {name} {
section $name {
float "x"
float "y"
}
}
proc vector3f {name} {
section $name {
float "x"
float "y"
float "z"
}
}
proc vector4f {name} {
section $name {
float "x"
float "y"
float "z"
float "w"
}
}
set nameLen [uint32 "Name Length"]
str [align $nameLen 4] "utf8" "Name"
rectf "m_Rect"
vector2f "m_Offset"
vector4f "m_Border"
float "m_PixelsToUnits"
vector2f "m_Pivot"
uint32 "m_Extrude"
uint8 "m_IsPolygon"
alignPos 4
section "m_RD" {
pptr "texture"
pptr "alphaTexture"
section "m_SubMeshes" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
section "Submesh" {
uint32 "firstByte"
uint32 "indexCount"
int32 "topology"
uint32 "firstVertex"
uint32 "vertexCount"
section "localAABB" {
vector3f "m_Center"
vector3f "m_Extent"
}
}
}
}
section "m_IndexBuffer" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
uint8 "data"
}
}
section "m_VertexData" {
int32 "m_CurrentChannels"
uint32 "m_VertexCount"
section "m_Channels" {
set alen [int32 "size"]
for {set i 0} {$i < $alen} {incr i} {
section "ChannelInfo" {
uint8 "stream"
uint8 "offset"
uint8 "format"
uint8 "dimension"
}
}
}
set dlen [uint32 "dataSize"]
bytes $dlen "data"
}
rectf "textureRect"
vector2f "textureRectOffset"
vector2f "Unknown"
uint32 "settingsRaw"
vector4f "uvTransform"
}