Text Table: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Enhance explanations, add examples, add links.)
m (Use <pre> instead of <code>.)
 
Line 6: Line 6:
* The whole file is always UTF-8, and each line is in the format <code>[[Hexadecimal|HEX]]=string</code> (formally, [Hex sequence]=[Text sequence]).
* The whole file is always UTF-8, and each line is in the format <code>[[Hexadecimal|HEX]]=string</code> (formally, [Hex sequence]=[Text sequence]).
* Blank lines are ignored, and # can be used as the first character of a line to leave comment (until the end of said line).
* Blank lines are ignored, and # can be used as the first character of a line to leave comment (until the end of said line).
* The hex value must be an even number of nibbles (2 nibbles would give: <code>42</code>, 4 nibbles <code>1EE7</code>, etc.), and must be in big endian (most significant to least significant, <code>10</code> means 16 in decimal, and <code>CA75</code> means 51829 in decimal ).
* The hex value must be an even number of nibbles (2 nibbles would give <code>42</code>, 4 nibbles <code>1EE7</code>, etc.), and must be in big endian (most significant to least significant, <code>10</code> means 16 in decimal, and <code>CA75</code> means 51829 in decimal ).
* Whitespaces can only be present in the text sequence, which can't contain '[' or ']' characters.
* Whitespaces can only be present in the text sequence, which can't contain '[' or ']' characters.


Line 28: Line 28:


Using this TBL:<br>
Using this TBL:<br>
<code>
<pre>
00= <br>
00=  
01=A<br>
01=A
02=B<br>
02=B
03=C<br>
03=C
04=D<br>
04=D
</code><br>
</pre><br>
This sequence <code>0x02, 0x01, 0x04, 0x00, 0x03, 0x01, 0x02</code><br>
This sequence <code>0x02, 0x01, 0x04, 0x00, 0x03, 0x01, 0x02</code><br>
Is decoded as <code>BAD CAB</code>
Is decoded as <code>BAD CAB</code>
Line 42: Line 42:


Using this TBL:<br>
Using this TBL:<br>
<code>
<pre>
<nowiki># Alphabet</nowiki><br>
# Alphabet
00= <br>
00=  
01=A<br>
01=A
02=B<br>
02=B
03=C<br>
03=C
04=D<br>
04=D
05=E<br>
05=E
<br>
 
<nowiki># Dictionary</nowiki><br>
# Dictionary
70=AT<br>
70=AT
<br>
 
<nowiki># Controls</nowiki><br>
# Controls
<nowiki>*FE</nowiki><br>
*FE
\FF=[end of text]\n<br>
\FF=[end of text]\n
</code><br>
</pre><br>
This sequence <code>0x01, 0x00, 0x02, 0x01, 0x04, 0x00, 0x03, 0x70, 0xFE, 0x70, 0x05, 0x00, 0x01, 0x00, 0x02, 0x07, 0xFF</code><br>
This sequence <code>0x01, 0x00, 0x02, 0x01, 0x04, 0x00, 0x03, 0x70, 0xFE, 0x70, 0x05, 0x00, 0x01, 0x00, 0x02, 0x07, 0xFF</code><br>
Is decoded as:<br>
Is decoded as:<br>

Latest revision as of 00:03, 24 August 2024

So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?

A Text Table or .TBL file describes to a hex editor how to convert a ROM's text format into readable text.

Overview

Normal Entries

  • The whole file is always UTF-8, and each line is in the format HEX=string (formally, [Hex sequence]=[Text sequence]).
  • Blank lines are ignored, and # can be used as the first character of a line to leave comment (until the end of said line).
  • The hex value must be an even number of nibbles (2 nibbles would give 42, 4 nibbles 1EE7, etc.), and must be in big endian (most significant to least significant, 10 means 16 in decimal, and CA75 means 51829 in decimal ).
  • Whitespaces can only be present in the text sequence, which can't contain '[' or ']' characters.

For example:

  • E1=H means the byte 0xE1 means uppercase H.
  • 1502= that  means the byte 0x15 followed by the byte 0x02 means the word "that" with spaces on either side.

Non-Normal Entries

These special cases allow for more flexibility and ease of usage. It contains the prefixes, labels, parameters, control code, end token, etc.

For example:

  • *HEX indicates that HEX is a newline. Notice there is no text sequence.
  • HEX=\n indicates that HEX is a newline too.
  • \HEX indicates that HEX is the end of text. Notice there is no text sequence.
  • \HEX=[end of text]\n indicates that HEX is the end of text. The optional text sequence here is useful for debugging or clarity purpose. Line breaks are used by dumpers only and will be ignored by inserters.
  • (HEXh)Title determines bookmarks. You need the h after the hexidecimal address for it to be read as hex.

Examples

Simple case

This is a purely made up example and don't came from any game that I know of.

Using this TBL:

00= 
01=A
02=B
03=C
04=D


This sequence 0x02, 0x01, 0x04, 0x00, 0x03, 0x01, 0x02
Is decoded as BAD CAB

More complex case

This is a purely made up example and don't came from any game that I know of.

Using this TBL:

# Alphabet
00= 
01=A
02=B
03=C
04=D
05=E

# Dictionary
70=AT

# Controls
*FE
\FF=[end of text]\n


This sequence 0x01, 0x00, 0x02, 0x01, 0x04, 0x00, 0x03, 0x70, 0xFE, 0x70, 0x05, 0x00, 0x01, 0x00, 0x02, 0x07, 0xFF
Is decoded as:
A BAD CAT
ATE A BAT[end of text]

Note:

  • The use (and abuse) of 0x70 to compress AT
  • The use of 0xFE and 0xFF for new line and end of text, respectively.

Useful tools

See Also

  • Category:TBL Files - All .TBL files are in this category. Place {{TBL|game=game name}} at the top of all such pages.

External Links