formats

package
v0.0.0-...-06f5a1e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2022 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const MIBL_ALIGN_SIZE uint32 = 0x1000
View Source
const MIBL_MAGIC uint32 = 'M'<<24 | 'I'<<16 | 'B'<<8 | 'L'
View Source
const MIBL_MIN_HEIGHT uint32 = 32
View Source
const MIBL_MIN_WIDTH uint32 = 16
View Source
const MIBL_VERSION uint32 = 10001
View Source
const MSRD_FILE_ALIGN uint32 = 0x10
View Source
const MSRD_FILE_INDEX_0 = 0
View Source
const MSRD_FILE_INDEX_MIPS = 1
View Source
const MSRD_FILE_INDEX_TEXTURE_START = 2
View Source
const MSRD_MAGIC uint32 = 'M'<<24 | 'S'<<16 | 'R'<<8 | 'D'
View Source
const MXMD_MAGIC uint32 = 'M'<<24 | 'X'<<16 | 'M'<<8 | 'D'
View Source
const XBC1_ZLIB_COMPRESSION_LEVEL = zlib.BestCompression

Variables

View Source
var XBC1_MAGIC = [4]byte{'x', 'b', 'c', '1'}

Functions

func WriteMSRD

func WriteMSRD(writer io.WriteSeeker, msrd MSRD) error

func WriteMXMD

func WriteMXMD(writer io.Writer, mxmd MXMD) error

Types

type MIBL

type MIBL []byte

func NewMIBL

func NewMIBL(mipData [][]byte, width, height uint32, format dds.DXGIFormat, startingIndex int) (MIBL, error)

func (*MIBL) GetFooter

func (mibl *MIBL) GetFooter() (MIBLFooter, error)

type MIBLFooter

type MIBLFooter struct {
	DataSize      uint32
	AlignSize     uint32
	Width         uint32
	Height        uint32
	LastMipWidth  uint32
	LastMipHeight uint32
	Format        MIBLFormat
	MipCount      uint32
	Version       uint32
	Magic         uint32
}

I guessed some of these, might not be entirely correct

type MIBLFormat

type MIBLFormat uint32
const (
	MIBL_FORMAT_R8G8B8A8_UNORM            = 37
	MIBL_FORMAT_BC1_UNORM      MIBLFormat = 66
	MIBL_FORMAT_BC2_UNORM      MIBLFormat = 67
	MIBL_FORMAT_BC3_UNORM      MIBLFormat = 68
	MIBL_FORMAT_BC4_UNORM      MIBLFormat = 73
	MIBL_FORMAT_BC5_UNORM      MIBLFormat = 75
	MIBL_FORMAT_BC7_UNORM      MIBLFormat = 77
)

type MSRD

type MSRD struct {
	Header              MSRDHeader
	MetaData            MSRDMetaData
	CompressedFiles     []XBC1
	MetaHeader          MSRDMetaDataHeader
	DataItems           []MSRDDataItem
	TextureIdToIndexMap map[MSRDTextureId]int
	TextureInfoHeader   MSRDTextureInfoHeader
	TextureInfoItems    []MSRDTextureInfoItem
}

func ReadMSRD

func ReadMSRD(reader io.ReadSeeker) (MSRD, error)

func (*MSRD) GetCachedTextures

func (msrd *MSRD) GetCachedTextures() ([]MIBL, error)

func (*MSRD) GetDataItemsByType

func (msrd *MSRD) GetDataItemsByType(dataItemType MSRDDataItemType) []MSRDDataItem

func (*MSRD) GetSplitMips

func (msrd *MSRD) GetSplitMips() ([]MIBL, error)

func (*MSRD) SetCachedTextures

func (msrd *MSRD) SetCachedTextures(textures []MIBL) error

func (*MSRD) SetCompressedFileData

func (msrd *MSRD) SetCompressedFileData(index int, data XBC1)

func (*MSRD) SetMips

func (msrd *MSRD) SetMips(splitMips []MIBL) error

type MSRDDataItem

type MSRDDataItem struct {
	Offset           uint32
	Size             uint32
	FileIndexPlusOne uint16
	Type             MSRDDataItemType
	Unk              [8]byte
}

type MSRDDataItemType

type MSRDDataItemType uint16
const (
	MSRD_DATA_ITEM_TYPE_MODEL        MSRDDataItemType = 0
	MSRD_DATA_ITEM_TYPE_SHADERBUNDLE MSRDDataItemType = 1
	MSRD_DATA_ITEM_TYPE_TEXTURECACHE MSRDDataItemType = 2
	MSRD_DATA_ITEM_TYPE_TEXTURE      MSRDDataItemType = 3
)

type MSRDFileItem

type MSRDFileItem struct {
	CompressedSize   uint32
	UncompressedSize uint32
	Offset           uint32
}

type MSRDHeader

type MSRDHeader struct {
	Magic          uint32
	Version        uint32
	MetaDataSize   uint32
	MetaDataOffset uint32
}

type MSRDMetaData

type MSRDMetaData []byte

type MSRDMetaDataHeader

type MSRDMetaDataHeader struct {
	Tag      uint32
	Revision uint32

	DataItemsCount       uint32
	DataItemsTableOffset uint32
	FileCount            uint32
	FileTableOffset      uint32

	Unk1 [0x1C]byte

	TextureIdsCount   uint32
	TextureIdsOffset  uint32
	TextureInfoOffset uint32
}

type MSRDTextureId

type MSRDTextureId uint16

type MSRDTextureInfoHeader

type MSRDTextureInfoHeader struct {
	TextureCount       uint32
	TextureBlockSize   uint32
	Unk                uint32
	TextureNamesOffset uint32
}

type MSRDTextureInfoItem

type MSRDTextureInfoItem struct {
	Unk         [4]byte
	CacheSize   uint32
	CacheOffset uint32
	NameOffset  uint32
}

type MXMD

type MXMD []byte

func ReadMXMD

func ReadMXMD(reader io.Reader) (MXMD, error)

func (*MXMD) GetHeader

func (mxmd *MXMD) GetHeader() (*MXMDHeader, error)

type MXMDHeader

type MXMDHeader struct {
	Magic                  uint32
	Version                uint32
	ModelsOffset           uint32
	MaterialsOffset        uint32
	Unk0                   uint32
	VertexBufferOffset     uint32
	ShadersOffset          uint32
	CachedTexturesOffset   uint32
	Unk1                   uint32
	UncachedTexturesOffset uint32
}

type XBC1

type XBC1 []byte

func CompressToXBC1

func CompressToXBC1(name [0x1C]byte, data []byte) (XBC1, error)

type XBC1Header

type XBC1Header struct {
	Magic            [4]byte
	NumFiles         uint32
	UncompressedSize uint32
	CompressedSize   uint32
	Hash             uint32
	Name             [0x1C]byte
}

func ExtractXBC1

func ExtractXBC1(reader io.Reader) (XBC1Header, []byte, error)

func ReadXBC1Header

func ReadXBC1Header(reader io.Reader) (XBC1Header, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL