New Game Introduction

From Final Fantasy Hacktics Wiki
Revision as of 17:22, 5 March 2012 by Xifanie (talk | contribs) (Created page with " == THIS PAGE IS CURRENTLY IN DEVELOPMENT, DO NOT TOUCH == Number of pages to display 0x000043A0 0x00009CB4 A page can hold a maximum of 5 lines. Each line can have a max...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

THIS PAGE IS CURRENTLY IN DEVELOPMENT, DO NOT TOUCH

Number of pages to display 0x000043A0

0x00009CB4

A page can hold a maximum of 5 lines.

Each line can have a maximum width of 256, and has a height of 32. Lines will be automatically centered on the screen and will gradually reveal themselves from the left to the right. Given that a line of 60 width will take 4x less time than a line of 240 width to display, you should still calculate the width of the line and write it in the *page loading section* so that your users won't have an unsually long and annoying display speed.

Remember that the game was designed to run on 4:3 (320x240), and thus any images/text will be stretched in width to 125%!


XX YY ZZ 00

Byte Page
XX Number of lines for this page
YY test
ZZ test
00 00

AA BB 00 00

Byte Line
AA Line ID in the current page (0x0-0xF)
BB Width of the current line. The game will truncate anything beyong this width and horizontally center the result on the screen.
00 00
00 00
Hex String Type Load Info Operation
02 14 10 00 New Page (2 lines) Page 1 (OPNTEX3) Load OPENBK3 into VRAM (Ivalice map)
00 B0 00 00 Line 1 Row: 0 & Width: 176 Print (0,0) w=176;h=16
01 54 00 00 Line 2 Row: 1 & Width: 84 Print (0,16) w=84;h=16
01 14 00 00 New Page (1 line) Page 1 (OPNTEX3)
02 D4 00 00 Line 1 Row: 2 & Width: 212 Print (0,32) w=212;h=16
04 14 20 00 New Page (4 lines) Page 1 (OPNTEX3) Display previous loaded Image
03 AE 00 00 Line 1 Row: 3 & Width: 174 Print (0,48) w=174;h=16
04 C0 00 00 Line 2 Row: 4 & Width: 192 Print (0,64) w=192;h=16
05 B0 00 00 Line 3 Row: 5 & Width: 176 Print (0,80) w=176;h=16
06 86 00 00 Line 4 Row: 6 & Width: 134 Print (0,96) w=134;h=16
02 14 11 00 New Page (2 lines) Page 1 (OPNTEX3) Load OPENBK4 into VRAM (Shadowed Ramza)
07 98 00 00 Line 1 Row: 7 & Width: 152 Print (0,112) w=152;h=16
08 56 00 00 Line 2 Row: 8 & Width: 86 Print (0,128) w=86;h=16
03 14 00 00 New Page (3 lines) Page 1 (OPNTEX3)
09 92 00 00 Line 1 Row: 9 & Width: 146 Print (0,144) w=146;h=16
0A 92 00 00 Line 2 Row: 10 & Width: 146 Print (0,160) w=146;h=16
0B 88 00 00 Line 3 Row: 11 & Width: 136 Print (0,176) w=136;h=16
03 14 20 00 New Page (3 lines) Page 1 (OPNTEX3) Display previous loaded Image
0C 6C 00 00 Line 1 Row: 12 & Width: 108 Print (0,192) w=108;h=16
0D B4 00 00 Line 2 Row: 13 & Width: 180 Print (0,208) w=180;h=16
0E A4 00 00 Line 3 Row: 14 & Width: 164 Print (0,224) w=164;h=16
02 15 12 00 New Page (2 lines) Page 2 (OPNTEX4) Load OPENBK5 into VRAM (Light Ramza)
00 B6 00 00 Line 1 Row: 0 & Width: 182 Print (0,0) w=182;h=16
01 8C 00 00 Line 2 Row: 1 & Width: 140 Print (0,16) w=140;h=16
03 15 20 00 New Page (3 lines) Page 2 (OPNTEX4) Display previous loaded Image
02 DE 00 00 Line 1 Row: 2 & Width: 222 Print (0,32) w=222;h=16
03 C8 00 00 Line 2 Row: 3 & Width: 200 Print (0,48) w=200;h=16
04 EA 00 00 Line 3 Row: 4 & Width: 234 Print (0,64) w=234;h=16
02 15 00 00 New Page (2 lines) Page 2 (OPNTEX4)
05 D0 00 00 Line 1 Row: 5 & Width: 208 Print (0,80) w=208;h=16
06 B4 00 00 Line 2 Row: 6 & Width: 180 Print (0,96) w=180;h=16
01 15 00 00 New Page (1 line) Page 2 (OPNTEX4)
07 7A 00 00 Line 1 Row: 7 & Width: 122 Print (0,112) w=122;h=16
02 15 00 00 New Page (2 lines) Page 2 (OPNTEX4)
08 7A 00 00 Line 1 Row: 8 & Width: 122 Print (0,128) w=122;h=16
09 82 00 00 Line 2 Row: 9 & Width: 130 Print (0,144) w=130;h=16
02 15 00 00 New Page (2 lines) Page 2 (OPNTEX4)
0A A2 00 00 Line 1 Row: 10 & Width: 162 Print (0,160) w=162;h=16
0B 74 00 00 Line 2 Row: 11 & Width: 116 Print (0,176) w=116;h=16


A few notes about working on the introduction... The game will read the text page offset and then read 4 bytes at that offset.

For example the first one by default is: 02 14 10 00

The first byte tells the number of lines the page has.

The second byte tells which image to load the text from: 0x14 = Page 1 0x15 = Page 2

The third byte in this case is special. 0x10 = load Ivalice Map 0x11 = load Shadow Ramza 0x12 = load Ramza 0x20 = print previously loaded image Sadly this means you can't have two different images two pages in a row. If you want to edit those, you can find them in OPEN\OPENTEXT.BIN. They are 16bpp 210x180 TIM images. Loading coordinates are 0 pixels from the left and 43 pixels from the top. Because of these dimensions, you can't completely print over the previous background which is 256x240.

As for the text itself, they are 256x256 4bpp TIM images with a line height of 16 pixels. (0,0,0) Black will be automatically transparent, even if it's not the first color of the palette.

An important thing to note is that the palette of both files MUST be identical.

But then you have the lines bytes 02 14 10 00 (page settings) 00 B0 00 00 (first line) 01 54 00 00 (second line)

The first byte is the ID of the line in the assigned page, while the second byte is the width of the line. You will need to manually get the width of your line so that it prints all your text and centers it properly on the screen.

What the above does is as follows. 02 14 10 00 (2 lines, 1st page, load Ivalice Map) 00 B0 00 00 (print line 0x00 with 176 width; centered) 01 54 00 00 (print line 0x01 with 84 width; centered)

Oh and don't worry about vertically centering, that's automated too. It doesn't require any edit since the height of the lines is always 16 pixels.

If you actually end up using less or more (you can't add much more...) you'll have to edit the number of page offsets... Else the best you can do is make it print a 0 width line on the screen and the player will still have to press the confirm button to get past it.