Okay, I have decided to give a shot at changing a VWF. The font is already located and story lines and profiles can be changed. I have put the following letters that need its width changed in story line 11.
From what I know, the characters are in a 16 x 16 sized tiles. Somehow I got to find the data that contains the data (I think the bytes 10) to display a different length. So I ever need to figure out how to change the font from 16 x 16 to 8 x 16 (8 pixels in width) or give each letter a certain VW.
So I decided I need to use 'VBA-SDL-H' to see if I can get the data and figure it out. However, I can't see to work out how to use. I only figured out this much:
The read me only says how it works, not how to set it up. What do I need to enter in order to get the program running? I'm not used command-line that many times.
An IPS patch of what I have done and a save file can be downloaded here in case anyone would like to lend me a hand.
Also are some notes made by Perfect_Guy. They may help or may not help but its worth posting them.
============================================================
Relevant Offsets
============================================================
042BA4 - Points to 08C59368 -> 0837CBCC (Font Images)
063608 - Menu Data Pointers
37CBCC - Font Image Data
CF7BAC - Story Titles Pointers
CF9D5C - Story Episodes Pointers
CF9E58 - Pilot Profiles Pointers
DCA820 - EoF Padding
============================================================
Menu Data Pointers
============================================================
Data Structure (8 bytes)
Text Pointer - Unsigned Int32
Unknown 1 - Unsigned Int32
* 6 structures, one for each selection of the Main Menu
* Unknown 1 could be the image, background, or menu code
pointer. I haven't looked into it
============================================================
Font Image Data
============================================================
Character Structure
2x2 Tiles
8x8 linear bitmap chunks
16 bits per pixel, second-to-first
* 1611 structures, one for each character in the font
* Even though the font definition itself doesn't represent
the characters contiguously, the image data is coniguous
* Some characters appear in a different order from the
font definition
============================================================
Story Titles Pointers
============================================================
51 Unsigned Int32's that point to the image data for each
episode of the story.
Image Structure
4x14 tiles
8x8 linear bitmap chunks
16 bits per pixel, second-to-first
* Image is supposedly compressed with LZ77.
* Image is composed of seven 16-pixel-tall rows
* Rows are arranged horizontally for title image
============================================================
Story Episodes Pointers
============================================================
51 Unsigned Int32's that point to individual pointer tables
which in turn point to the text data for each individual
line of text in any given story episode description.
Diagram:
All Episodes Pointer Table - points to:
Individual Episode's Pointer Table - points to:
Episode's Individual Lines' Text
* Episode Line Pointer tables are terminated with two EOF
lines, which are referenced by 085C42E0
* At least 6 lines must be present before EOF's become
effective. Pad with empty lines if necessary
* Lines are normal text, terminated with 00
* All lines' text data must begin on a 4-byte boundary
============================================================
Pilot Profiles Pointers
============================================================
Data Structure (12 bytes)
Pilot Text Pointer - Unsigned Int32
Machine Text Pointer - Unsigned Int32
Unknown 1 - Unsigned Int32
* 38 structures, one for each pilot, in the order they
appear on the Pilot Profiles menu; left-to-right,
top-to-bottom
* Unknown 1 could be just about anything. I haven't looked
into it
* Pilot and Machine text must begin on a 4-byte boundary
============================================================
EoF Padding
============================================================
* Unused portion of the ROM. Free game for any data
* A few chunks do have data in them, which include the
ROM headers for GP Legend and Maximum Velocity among other
data. The purpose of these chunks is unknown, so don't
overwrite them
* Padding is composed entirely of FF bytes
* Actually begins at DCA818, but DCA820 is prettier
============================================================
Font Character Assignment Specification
============================================================
16-bit characters, except for control characters
00: String Terminator
0A: Newline
8060-813F: Windows Code Page 1252 (starting at Space)
Miscellaneous Symbols & Punctuation:
8140-817E, 8180-81AC, 81B8-81BF, 81C8-81CE,
81DA-81E8, 81F0-81F7, 81FC
824F-8258: Numerical Digits
8260-8279: Roman Alphabet (Uppercase)
8281-829A: Roman Alphabet (Lowercase)
829F-82F1: Hiragana
8340-8396: Katakana
839F-83B6: Greek Alphabet (Uppercase)
83BF-83D6: Greek Alphabet (Lowercase)
8440-8460: Cyrillic Alphabet (Uppercase)
8470-8491: Cyrillic Alphabet (Lowercase)
849F-84BE: Table Formatting Characters
8540-8553: Circled Numbers (1 to 20)
859F-85A8: Roman Numerals
Unknown characters requiring further analysis:
8600-87FF, 8840-8850
Kanji Character Ranges:
889F-88FC, 8940-897E, 8980-89FC, 8A40-8A7E,
8A80-8AFC, 8B40-8B7E, 8B80-8BFC, 8C40-8C7E,
8C80-8CFC, 8D40-8D7E, 8D80-8DFC, 8E40-8E7E,
8E80-8EFC, 8F40-8F7E, 8F80-8FFC, 9040-907E,
9180-91FC, 9240-927E, 9380-93FC, 9440-947E,
9580-95FC, 9640-967E, 9780-97FC, 9840-9872