========================================
TaBuLar v1.0
Font Table Editor for Windows 95/98
Copyright 1999 Court Jester Z
http://members.tripod.com/court_jester_z/
========================================

View this document in MS-DOS Edit, Windows Notepad, or another
text editor that uses a fixed-width font.

-----------------
TABLE OF CONTENTS
-----------------
- About TaBuLar
- Getting Started
    o Command-Line Options
    o The Interface
    o Numerical Input
    o File Formats
    o Locking Font Table Entries
    o Tutorial: Making a Font Table for Final Fantasy 2
- Menu Reference
    o Edit Menu
    o Insert Menu
    o Thingy Menu
    o Block Ops Menu
- The 16-bit Entries Window
- Problems & Solutions
- Special Thanks
- Contact Information


-------------
ABOUT TABULAR
-------------

TaBuLar is a user-friendly utility for Windows 95/98 that
greatly speeds up the process of creating and editing
font table files for Thingy and Hexposure (Hexecute is
indirectly supported, too, since it can read Thingy table
files).  You fill in font table entries using the intuitive
grid-based interface, which is similar to creating a
spreadsheet.  Many tasks, such as inserting the English
alphabet or Japanese kana into the font table, are
completely automated and require no typing whatsoever!

Although the length of this document may suggest otherwise,
TaBuLar is really easy to use.  You probably don't even
need to read any further to get started.  This Read Me file is
so large because I'm an obsessive-compulsive freak when it
comes to writing documentation.  I can't stop until every
feature is covered in more detail than anyone could possibly
ever need.  We all have our crosses to bear. ;-)


SYSTEM REQUIREMENTS:
   - Windows 95/98
   - Desktop resolution of 800x600 or higher recommended
   - Visual Basic 5 runtime library -- If TaBuLar gives you an
     error message when you try to run it, you may need to
     download the following file:
"http://members.tripod.com/court_jester_z/tabularrequiredfiles.zip"
     Extract the archive to a temporary directory and run
     "TaBuLar Temporary Files Setup.exe".


CURRENT FEATURES:
   - Neato grid-based interface!
   - Super-duper automated input of English and Japanese
     characters!
   - Keen 16-bit font table entry editor!
   - Far-out block copy/paste options!
   - Annoying 1970s adjectives!
   - Compatible with Thingy v0.98 and Hexposure v0.44b
     table files.  Can also read the old Hexposure table
     file format
   - Entry locking -- locked font table entries cannot be
     modified
   - The knowledge that you'll never again suffer the
     heartbreak of having end-of-line space characters
     stolen by the evil MS-DOS Editor


FUTURE FEATURES:
   - If a future version of UNIROM uses a single file format
     instead of four different ones, support for UNIROM font
     tables will be a priority.  It's on the back burner
     for now, though.
   - If I'm feeling particularly brave, I may try to implement
     a relative search feature


---------------
GETTING STARTED
---------------


COMMAND-LINE OPTIONS:

You can tell TaBuLar to load a table file when it starts,
using the following syntax:

    TaBuLar [T/H] filename

Where:
    [T/H] - By default, TaBuLar will assume that the file
            you specify is in TaBuLar TAB format.  If you
            type a T (followed by a space) before the
            filename, TaBuLar will load the file as a Thingy
            font table instead.  If you type an H before the
            filename, the file will be loaded as a
            Hexposure font table.
    filename - The name of the file to load

Examples:
    TaBuLar T thingy.tbl
    TaBuLar H hexpose.tbl
    TaBuLar tabular.tab


THE INTERFACE:

The main TaBuLar window consists of a large grid containing
256 boxes (00-FFh).  If you haven't already guessed, each box
represents one position in the font table.  You'll also notice
two buttons in the top left corner of the window, one with a
"-" sign and one with a "+" sign.  These buttons change the
size of the text in the grid boxes.

To change the value that corresponds to a particular font
table entry, simply click on the appropriate grid box and type
away.

For example, if you wanted table entry 9Bh to represent the
letter 'A', you would do the following:
    - Locate row 9 on the grid.  There are guide numbers (0-F)
      to the left of the grid to help you.
    - Now locate column Bh (11).  Use the guide numbers above
      the grid if necessary.
    - Click on the grid box that corresponds to Row 9,
      Column Bh.  The box background should turn yellow,
      indicating that it is selected.
    - Type the letter 'A' in the box.
    - Repeat this process to assign values to the other 
      font table positions.

Of course, if this was all TaBuLar was capable of, it
wouldn't be much of a timesaver.  Fortunately, there are a
whole lot of other things you can do with it.  Before I get
into all that, though, a few general notes about TaBuLar:


NUMERICAL INPUT:

Whenever you are asked to input a number, IT IS ASSUMED THAT
YOU ARE ENTERING A DECIMAL VALUE.  If you want to enter a
hexadecimal value instead, simply type an "h" after the
number.  Example:

        10         <--- DECIMAL
        10h        <--- HEX


FILE FORMATS:

TaBuLar supports the table file formats used by Thingy and
Hexposure.  Each format has different features.  For example,
the toggle settings in TaBuLar's Thingy menu are only
supported by Thingy.  So if you were to turn those settings
on, then save the font table in Hexposure format, the
settings would be lost.

If a particular feature is not supported by a particular
table file format, there is some sort of note made on-screen
so that you will be aware of it.

If you want to make sure that you never lose any font table
settings permanently,  you may want to keep a copy of your
table in TaBuLar's proprietary TAB format.  Essentially a
hybrid of the Thingy and Hexposure table file formats, TAB
files save every single font table option that TaBuLar
supports.  Note that the TAB format is NOT supported by
any hex editor.  It's simply a way to put all your font
table settings in a safe place, in case you lose data
when converting a table to a different format.

TAB files will become more useful as TaBuLar is updated
to support additional file formats.


LOCKING FONT TABLE ENTRIES:

If you want to make sure that parts of your font table are
not accidentally over-written, you can "lock" those parts.
When a font table entry is locked, its value cannot be
changed.

To lock a font table entry, double-click on its grid box.
When a font table entry is locked, its grid box is gray
instead of white.  Double-click again to unlock an entry.
To lock or unlock more than one entry at the same time,
use the Block Lock and Block Unlock options (described
later; see the MENU REFERENCE section).


TUTORIAL: MAKING A FONT TABLE FOR FINAL FANTASY 2

TaBuLar is really pretty easy to use, but it has a lot
of menu options that can be confusing at first.  To help
you get the hang of things, I'll walk you through the
process of creating a font table for Final Fantasy 2 US.

Probably the best place to begin work on the font table is
with the alphabet.  If you were creating this table file
"by hand," you would type the number of the font table entry,
followed by an equal sign, and then a letter.  You'd then
repeat this for each letter of the alphabet.  Using
TaBuLar, you can accomplish the same thing with three
(count 'em, 3) mouse clicks.

Final Fantasy 2's capital letters begin at table entry 42h.
So, click on grid box 42h.  It should turn yellow, indicating
that it is selected.  Next, click "Insert" on the menu bar,
and select the "Capital English Alphabet" option.

Voila!  You've just inserted the letters A-Z into your font
table, and saved yourself a helluva lot of typing.  Let's
move on to the lowercase letters.

FF2's lowercase letters begin at font table entry 5Ch.  So
click on grid box 5Ch.  Then click "Insert", and select the
"Lowercase English Alphabet" option.  You now have the
lowercase alphabet in your font table.

How about some numbers?  In FF2, the numbers begin at
entry 80h.  Click on grid box 80h, then click "Insert" and
select "Numbers 0-9."

Time for punctuation.  You'll have to type the punctuation
characters yourself, because TaBuLar can't do that
automatically.  Just click on grid box C0h, and type the
character that belongs there.  Then press TAB to move to
the next grid box, and type another character.

C0h = '  (apostrophe)
C1h = .  (period)
C2h = -  (hyphen)
C3h = .. (two periods, representing elipses)
C4h = !  (exclamation point)
C5h = ?  (question mark)
C6h = %  (percentage mark)
C7h = /  (forward slash)
C8h = :  (colon)
C9h = ,  (comma)
FFh = _  (space)

The next step is to define the Line Break and String Break
values.  These are the values that are used in the FF2 ROM
to indicate the end of a line of text, and the end of an
entire text string, respectively.

To set the Line Break value, click "Edit", "Line Break Values".
A small window will appear, containing two entry fields.
You can define 2 different Line Break values, but since FF2
only uses one, you'll want to leave the bottom field alone.

FF2's Line Break value is 01h, so, in the top field, type: 01h.
(If you prefer, you can simply type the number 1.)  Click the
"Okay" button.  The Line Break value has now been set.

To set the String Break value, click "Edit", "String Break
Values".  This window also contains two entry fields, and
again, you'll want to leave the bottom one alone, because FF2
only uses one String Break value.

FF2's String Break value is 00h, so type 00h in the top entry
field.  Then click "Okay."

If you were creating a table file for a game that didn't use
Dual Tile Encoding, you'd be done now!  As it is, though,
there's still a little work left, because FF2 does use DTE.
With DTE, there are certain font table entries that represent
two tiles on-screen instead of one.  This is another thing
that TaBuLar can't help you with, because there is no
established order for DTE values.

Before your font table is complete, you'll have to enter the
following DTE values in the grid boxes shown.  

NOTE: Uncerscores (_) represent spaces.

8Ah = e_
8Bh = _t
8Ch = th
8Dh = he
8Eh = t_
8Fh = ou
90h = _a
91h = s_
92h = er
93h = in
94h = re
95h = d_
96h = an
97h = _o
98h = on
99h = st
9Ah = _w
9Bh = o_
9Ch = _m
9Dh = ha
9Eh = to
9Fh = is
A0h = yo
A1h = _y
A2h = _i
A3h = al
A4h = ar
A5h = _h
A6h = r_
A7h = _s
A8h = at
A9h = n_
AAh = _c
ABh = ng
ACh = ve
ADh = ll
AEh = y_
AFh = nd
B0h = en
B1h = ed
B2h = hi
B3h = or
B4h = ,_
B5h = I_
B6h = u_
B7h = me
B8h = ta
B9h = _b
BAh = _I
BBh = te
BCh = of
BDh = ea
BEh = ur
BFh = l_
CAh = _f
CBh = _d
CCh = ow
CDh = se
CEh = __ (two spaces)
CFh = it
D0h = et
D1h = le
D2h = f_
D3h = _g
D4h = es
D5h = ro
D6h = ne
D7h = ry
D8h = _l
D9h = us
DAh = no
DBh = ut
DCh = ca
DDh = as
DEh = Th
DFh = ai
E0h = ot
E1h = be
E2h = el
E3h = om
E4h = 's
E5h = il
E6h = de
E7h = gh
E8h = ay
E9h = nt
EAh = Wh
EBh = Yo
ECh = wa
EDh = oo
EEh = We
EFh = g_
F0h = ge
F1h = _n
F2h = ee
F3h = wi
F4h = _M
F5h = ke
F6h = we
F7h = _p
F8h = ig
F9h = ys
FAh = _B
FBh = am
FCh = ld
FDh = _W
FEh = la

Well, that last part was probably pretty tedious, but the rest
was a snap, no?  There is actually one other thing you need to
do before your font table is complete, and that is to define
the 16-bit font table entries that FF2 uses to represent
character names (0400h=Cecil, 0401h=Kain, and so on).  But
I'll save that for the section devoted to TaBuLar's
16-bit entry editor.


--------------
MENU REFERENCE
--------------

That little tutorial barely scratched the surface of
TaBuLar's features.  So below, I've listed each of
the program's menu options, and a description of what they
do:


EDIT MENU

   - 16-bit Entries
        This allows you to define special 16-bit font table
        entries.  Many games use them to represent strings such
        as character names.  Also, some Japanese games use
        16-bit values to represent kanji characters.  This
        menu option is explained in detail later, but for now,
        here's a simple example:

        In Final Fantasy II, the 16-bit value 0400h is used
        throughout the ROM to represent Cecil's name.  To define
        this value using TaBuLar, you would do the following:
                o Click "Edit", "16-bit Entries".
                o Click the "Add" button.
                o A small window with two entry fields will
                  appear.  In the top field, type 0400h and
                  in the bottom, type Cecil.

   - Line Break Values
   - String Break Values
   - Section Break Value
   - Dakuten/Handakuten Values
        These options allow you to modify certain special
        values.  The Line Break and String Break values are
        supported by both Thingy and Hexposure.  The Section
        Break value is supported only by Hexposure, and the
        Dakuten/Handakuten values are supported only by
        Thingy.


INSERT MENU:

   - Repeated Value
        Use this option to insert several copies of a
        specified value into your font table.  The currently
        selected grid box will be used as the starting point,
        and you will be asked to specify the number of times
        to repeat the value.  Example:

        If you wanted to fill half of the font table (128
        positions) with asterisks, starting at position 18h,
        you would do the following:
                o Select grid box 18h.  It is selected if its
                  background color is yellow.
                o Click "Insert", "Repeated Value."
                o In the top entry field, type the asterisk
                  character, and in the bottom field, type
                  128.
                o Click OK.
        Your font table would now contain 128 asterisks,
        beginning at position 18h and ending at 97h.

   - Numbers 0-9
        Inserts the numbers 0 through 9 (in that order) into
        your font table.  The currently selected grid box will
        be used as the starting point.

   - Capital English Alphabet
        Inserts all of the capital English letters into your
        font table.  The currently selected grid box will be
        used as the starting point.

   - Lowercase English Alphabet
        Inserts all of the lowercase English letters into your
        font table.  The currently selected grid box is the
        starting point.
   
   - Romaji >
       o Basic Romaji (Capital)
       o Basic Romaji (Lowercase)
            Inserts the following romanized kana into your
            font table: a, i, u, e, o, ka, ki, ku, ke, ko,
            sa, shi, su, se, so, ta, chi, tsu, te, to, na, ni,
            nu, ne, no, ha, hi, hu, he, ho, ma, mi, mu, me,
            mo, ya, yu, yo, ra, ri, ru, re, ro, wa, wo, n.
            As usual, the currently selected grid box is the
            starting point.

       o Dakuten/Handakuten Romaji (Capital)
       o Dakuten/Handakuten Romaji (Lowercase)
            Inserts the following romanized kana into your
            font table: ga, gi, gu, ge, go, za, ji, zu, ze, zo,
            da, dji, du, de, do, ba, bi, bu, be, bo, pa, pi,
            pu, pe, po.  The currently selected box is the
            starting point.

       o Chisai Romaji (Capital)
       o Chisai Romaji (Lowercase)
            Inserts the following romanized kana into your
            font table: xa, xi, xu, xe, xo, tt, xya, xyu, xyo,
            xwa, xka, xke.

            NOTE: There doesn't seem to be any common order
            for the chisai kana.  Every game I came across was
            a little different.  So you may have to rearrange
            these kana after you've inserted them.

   - Hiragana >
       o Basic Hiragana
       o Dakuten/Handakuten Hiragana
       o Chisai Hiragana
            These options allow you to insert hiragana
            into your font table, in EUC-JIS format.
            Obviously, you won't see anything but jibberish
            unless your system is configured to display
            Japanese text.

   - Katakana >
       o Basic Katakana
       o Dakuten/Handakuten Katakana
       o Chisai Katakana
            Same as above, except that these options
            insert katakana symbols into your font table.

   - Mixed Kana >
       o Complete Dakuten/Handakuten Kana
            This option inserts the dakuten/handakuten
            hiragana AND katakana.  I added this option
            because the font table entries for dakuten and
            handakuten characters in many games mix hiragana
            and katakana together.  In those cases, using
            this option will save you a bit of rearranging.


THINGY MENU:
   The items in this menu apply only to Thingy table files.

   - Reverse (Han)Dakuten/Kana Order
        This is a toggle option.  Normally, Thingy assumes
        that a dakuten or handakuten value will appear
        first, followed by the kana that is being modified.
        If this option is checked, Thingy will do just the
        opposite: assume that the kana that is being modified
        appears first, and the dakuten or handakuten value
        follows.

   - Omit <$xx> Symbols from Script Dumps
        This is also a toggle option.  Check this option if
        you want a clean-looking script dump, without the
        <$xx> symbols that Thingy usually prints.


BLOCK OPS MENU:

   - Block Copy
        This option allows you to copy data from multiple font
        table entries.  This is useful if you need to move a
        particular block of entries somewhere else.

        The currently selected grid box is the beginning of
        the block.  To choose the end of the block, click on
        a second grid box after selecting the Block Copy
        option.

   - Block Cut
        This is the same as Block Copy, except that, with
        Block Cut, the font table entries in the block are
        deleted after being copied.
   
   - Block Paste
        This option inserts data into the font table that has
        been copied with Block Copy or Block Cut.  The
        currently selected grid box is the starting point.

   - Block Lock
        Allows you to lock multiple font table entries.  This
        option works the same as Block Copy.

   - Block Unlock
        Allows you to unlock multiple font table entries.


-------------------------
THE 16-BIT ENTRIES WINDOW
-------------------------

This window allows you to manage special 16-bit font
table entries.  The available buttons are as follows:

   
   - "Up Arrow" & "Down Arrow" Buttons
        These buttons move the selected 16-bit entry up and
        down in the list.  This is useful if you want to
        arrange the entries in a specific order.
        
   - "Add" Button
        Add a new 16-bit entry to the list.  Clicking on this
        button brings up a dialog box which allows you to
        specify the entry number and the value that will be
        assigned to it.

   - "Add Series" Button
        This button allows you to add a series of entries
        to the list.  When you click on "Add Series", a
        dialog box will appear, asking you to enter the
        desired range.  You will then be prompted to enter
        values for each entry number in that range.
        Confused?  This option is explained in more easily
        understood terms a little later.

   - "Edit" Button
        This button allows you to edit a font table entry
        that has already been created.

   - "Import From File"
        Imports 16-bit font table entries from an existing
        file.  This file can be one of the following:
            o A Thingy TBL file
            o A plain text file, with one entry value per
              line
            o A script dump file.  This works the
              same as the plain text option, except that
              TaBuLar will automatically remove the <END>
              symbols at the end of each line
   
   - "Delete" Button
        This button deletes the font table entry that is
        currently selected.

   - "Clear All" Button
        This button completely erases the entry list.

The following example demonstrates how the 16-bit font table
entries in Final Fantasy II would be defined.

FF2 uses fourteen different 16-bit entries to represent
character names.  They are as follows:

0400h=Cecil
0401h=Kain
0402h=Rydia
0403h=Tellah
0404h=Edward
0405h=Rosa
0406h=Yang
0407h=Palom
0408h=Porom
0409h=Cid
040Ah=Edge
040Bh=FuSoYa
040Ch=Golbez
040Dh=Anna

To get started, click the Add button.  A small dialog box
will appear with two text fields.  In the top field, type
the number of the entry you want to add: in this case,
0400h.  In the bottom field, type the value that you want
to assign to the entry number: Cecil.  Click Add Entry.
The following text will appear in the 16-bit entry list:
"0400=Cecil".

You could repeat the above steps for the other 13 entries,
but there is a way you can save a little time.  Click the
Add Series button.

A dialog box will appear asking you to specify the first and
last entry numbers in the series.  In this case, the first
entry number we want to add is 0401h, and the last number is
040Dh.  So, in the first field, type 0401h.  Then type 040Dh in
the second field.

Click the Begin Value Entry button.  A new dialog box will
appear containing one text field.  Above the text field is
the message, "Type the desired value for entry 0401h below."
The name Kain should be assigned to entry number 0401h, so
type Kain in the text field.  Then click Next Entry (or press
Enter).

That dialog box will go away, and a new box will appear that
is almost identical to the last one.  This one is asking you to
type the value for entry number 0402h.  The name Rydia is
the value for number 0402h, so type Rydia in the text field
and press Enter.

Repeat this process for all of the character names listed
above.  After you have entered the final name (Anna), you will
be returned to the main 16-bit entries window, where you'll see
that all of the names you entered have been added to the list.

Click Okaly-Dokaly to close the 16-bit entries window.  Then
save the font table.  If you have already performed the steps
in the tutorial that appears earlier in this document, then
you now have a complete FF2 table file!


---------------------
PROBLEMS & SOLUTIONS
---------------------

PROBLEM: TaBuLar isn't loading my table files properly.

SOLUTION: Make sure that you are selecting the correct
file format.  If you were to click File-->Open-->Thingy TBL,
and then select a Hexposure TBL file to open, of course it
wouldn't load properly, because TaBuLar is assuming that
the file is in Thingy format.


PROBLEM: When I try to insert Japanese symbols into my
font table, they show up as a bunch of nonsense characters.

SOLUTION: Your computer must have Japanese display
capabilities in order to see kana in TaBuLar.  There
are Shareware utilities available that will allow you to
view Japanese text on non-Asian versions of Windows.  One
such program is NJStar Communicator (http://www.njstar.com/).


PROBLEM: My system is capable of displaying Japanese,
but I still just see a bunch of jibberish.

SOLUTION: Make sure that your Japanese display utility is
configured to show EUC-JIS encoded Japanese text.  If it is
set to Shift-JIS or Auto-Detect, you'll have problems.


PROBLEM: You broke into my house last night and stole my VCR!

SOLUTION: I did not.


PROBLEM: Yes, you did!

SOLUTION: No, I didn't.


PROBLEM: Yes, you did!  I'd recognize your protruding ears
and pasty white skin anywhere!

SOLUTION: ....
....
This Q & A session is over!


--------------
SPECIAL THANKS
--------------

THANKS TO:

Necrosaro, SnowBro and Mike Walston, the authors of Thingy,
Hexposure and Hexecute, respectively.  Without them, TaBuLar
would be useless.  Unless looking at a bunch of empty text
boxes (albeit arranged in an attractive grid formation) does
something for you.

Zophar, the rest of the Zophar's Domain staff, and the
helpful people on the ROM Hack Board (thanks to the rude,
UNhelpful people also, for making me look good by
comparison :-)).  Just about everything I know about ROM
hacking (admittedly, not a whole helluva lot) came directly
or indirectly from ZD's ROM Hack Board and Links section.

The Archaic Ruins staff.  AR isn't really related to TaBuLar,
but it's the site that got me interested in emulation, way
back when.  Ah... Meeeemoooorieeeees....


-------------------
CONTACT INFORMATION
-------------------

If you want to contact me for some reason, send an e-mail to
court_jester_z@hotmail.com.

NO ROM REQUESTS!!  I can't imagine why I would be asked for
ROMs, but if anyone does it, I'll save the message and post
it in the Lame Mail section of my site -- when I get around
to creating a "real" web site, that is.


















---------------
END OF THE LINE
---------------

Wow.  If you actually read this far, I'm impressed.  If you
just skipped to the end without reading anything, I take it
back.  Well, as long as you're here, I may as well let you in
on a little secret.

Come closer....

Closer....

Little closer....

....

....

....

....

Soylent Green is people!!!!

....

Well, it is.

