Skip to main content

TBF

Status

FieldValue
Extension(s).tbf
Common ecosystemUnknown old-machine or converter lead
Format familyUnknown
Satin Studio statusResearching
Open / importNo
ExportNo
ConfidenceLow.

What it is

TBF appears in old-machine or converter lists. The exact ecosystem and structure are uncertain.

Satin Studio direction

Research lead only.

Versions and variants

This entry is tracked as a format lead, but Satin Studio does not yet have a public version or dialect matrix for it. Real sample files with machine/software provenance are needed before support can be planned safely.

File identification notes

Unknown.

Observed structure notes

  • Observed TBF readers find a 16-byte name at offset 0x83, a 256-byte thread-order table at offset 0x10A, RGB thread entries around offset 0x20E, and stitch records at offset 0x600.
  • Observed stitch records are three bytes x, y, control. Controls include 0x80 stitch, 0x81 needle change using the next thread-order entry, 0x90 jump or trim when movement is zero, 0x40 stop, 0x86 trim, and 0x8F end.
  • Observed TBF writers start with ASCII 3.00, pad to offset 0x80, then write DST-like header fields plus TP, JC, DO thread order, and DA thread RGB entries.
  • Observed TBF writers pad with spaces to offset 0x376, write 0D 1A, then pad with spaces to offset 0x600 before stitch records.
  • Observed TBF writers append terminal byte 0x1A after the end command record.

Structure sketch

Observed TBF files have fixed offsets for name, thread order, colors, and stitches:

struct TbfCandidate<'a> {
prefix: [u8; 0x83],
name: [u8; 0x10],
bytes_until_thread_order: &'a [u8],
thread_order: [u8; 0x100], // at observed offset 0x10A
thread_entries: &'a [TbfThreadEntry], // near observed offset 0x20E
bytes_until_stitches: &'a [u8],
records: &'a [TbfRecord], // at observed offset 0x600
}

struct TbfThreadEntry {
marker: u8, // observed 0x45
rgb: [u8; 3],
space: u8, // observed 0x20
}

struct TbfRecord {
x: u8,
y: u8,
control: u8, // 0x80 stitch, 0x81 needle, 0x90 jump/trim, 0x40 stop, 0x86 trim, 0x8F end
}

What we still need

Samples with provenance.