New Game Introduction
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.