Comments (14)
FF 01
apparently being valid is very interesting to me, given what I know about the renderer for text.
FF 9D 10
bolding text is super interesting too, probably a bitset of flags.
I'm working on a visual table for the available insertable glyphs.
from gibbed.letusclingtogether.
I think \xff\x84\x01\xff\x01
contains variable name because the next text:
That will be {VAR1} goth. Agreed?
Begging your pardons, but the oath-wage is\n{VAR1} goth, young master.
from gibbed.letusclingtogether.
Ah in this case that entire set of bytes is one "operation". FF 84
has three argument bytes. See text formatting doc.
So that FF 01
is not actually its own text formatting operation.
from gibbed.letusclingtogether.
UNK = \xff\x83\x01\x01\xff\xf1\xf0
Learned {UNK}.
{UNK} recruited!
You obtained the {UNK}.\nWould you like to learn it?
from gibbed.letusclingtogether.
FF 89 ??
It can be the sleep time between text messages.
from gibbed.letusclingtogether.
FC ff ww ww ll uu ..
I think that uu
has the following possible values: \x08
or \x10
or \x18
from gibbed.letusclingtogether.
From my tinkering, the 0xFC header is something like this:
[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x05)]
public struct TextMetadata
{
public const byte Signature = 0xFC;
public byte Chunks;
public byte Width;
public byte Lines;
public byte Length;
public byte Flags;
public readonly bool Flag101 { get => (Chunks & 0x01) != 0; }
public readonly bool Flag340 { get => (Lines & 0x40) != 0; }
public readonly int VisualWidth { get => Flags == 0 ? 0 : ((((Chunks ^ 1) / 2) * 254) + Width) / 2; }
public readonly int NonInterpolatedLength { get => Flags == 0 ? 0 : ((Lines & ~0x40) - 1) * 63 + Length; }
}
For text strings that have interpolated values (embedded format codes), I have only seen both Flag101 and Flag340 active. But I have only looked at a few text arrays so far.
NonInterpolatedLength is the number of characters in the string + the null terminator - any interpolated values.
VisualWidth is a pixel width for screen display. Not sure where else it is used, but I know it is used in the info bar--top region with (i) glyph--to control scrolling long strings into view when they are visually larger than screen width.
No idea what the Flags byte is actually for, or if there are any more flags inside the other fields. I used to think the Flags byte was for character bit width; that may still be true, but it seems unlikely now that @gibbed found the font "files". But I have not yet really examined any of the text strings with the 0x10 and 0x18 values.
from gibbed.letusclingtogether.
Actually, thinking about it again, it seems even more likely that the "Flags" field should be CharSize. I originally thought it was from the JP version of the game likely using the same internal formats, but now that we know the fonts do include "characters" that have values > 0xFF, they must be represented by least two bytes.
I have not yet looked into it, but maybe FD or FE is the first value in these two-byte characters?
from gibbed.letusclingtogether.
@Cryosaur This file D:\PSPISO\TOLUCT\PSP_GAME\USRDIR\FILETABLE_unpacked\1000\1\40.xlc
has 0x10
value \xfc \x03 \xf2 A ) \x10
b'\xfc\x03\xf2A)\x10\x03\xf20001\x02\xdap001Experience earned: \xff\x84\x01\xff\x01\xff\x80Skill points earned: \xff\x84\x02\xff\x01\x00'
from gibbed.letusclingtogether.
D:\PSPISO\TOLUCT\PSP_GAME\USRDIR\FILETABLE_unpacked\500\10241\9.xlc
0x10
values examples:
b'\xfc\x06\x8aB\x03\x10Play Time\xff\x80Amount of time that has elapsed since starting the game.\x00'
b'\xfc\x0e0C\x1a\x10Enemies Slain\xff\x80Total number of units you\'ve defeated. A breakdown by clan follows below, with monsters and any unallied persons categorized as "Unknown."\x00'
0x18
values examples:
b'\xfc\x04\xf6B\x1e\x18Guest\xff\x80A unit that has temporarily joined your party.\xff\x80You cannot issue commands to guest units.\x00'
b'\xfc\x06\x16C\x08\x18L: Lawful units respect the rules of society.\xff\x80N: Neutral units strive to attain balance.\xff\x80C: Chaotic units value freedom above all else.\x00'
0x28
values examples:
b'\xfc\x06<D\t(Your progress in the story has changed significantly\nsince your last save. You may want to return to the\nworld map to save your progress before proceeding.\n\nAre you sure you want to jump to this point?'
from gibbed.letusclingtogether.
In FC ff ww ww ll uu ..
the uu
is the number of lines * 8.
from gibbed.letusclingtogether.
Hmm, I'd say that's unlikely since the main fonts are 16x16, not 8x8. Could be related though.
from gibbed.letusclingtogether.
Original texts inside the following EMES files.
D:\PSPISO\TOLUCT\PSP_GAME\USRDIR\FILETABLE_unpacked\902\240\3.unknown
D:\PSPISO\TOLUCT\PSP_GAME\USRDIR\FILETABLE_unpacked\908\650\2.unknown
D:\PSPISO\TOLUCT\PSP_GAME\USRDIR\FILETABLE_unpacked\909\90\37.unknown
b'\x00\x00\xff\xa9\xff\x9c\x01\x01\xff\x8d\x01\x02\xff\x85\x01\x01Coritanae \xff\x81\x01\x01Keep\xff\x99\x01\xc9\x00\xff\x80\x00'
b'\x00\x00\xff\xa9\xff\x9c\x01\x01\xff\x8d\x01\x02\xff\x85\x01=For \xff\x81\x01\x01nearly \xff\x81\x01\x01a \xff\x81\x01\x01thousand \xff\x81\x01\x01years,\xff\x893 \xff\x81\x01\x01the \xff\x81\x01\x01nation \xff\x81\x01\x01of\xff\x80\xff\x8d\x01\x02\xff\x85\x01=Valeria \xff\x81\x01\x01endured,\xff\x893 \xff\x81\x01\x01leaving \xff\x81\x01\x01an \xff\x81\x01\x01indelible \xff\x81\x01\x01mark\xff\x80\xff\x8d\x01\x02\xff\x85\x01=on \xff\x81\x01\x01the \xff\x81\x01\x01pages \xff\x81\x01\x01of \xff\x81\x01\x01history,\xff\x893 \xff\x81\x01\x01before \xff\x81\x01\x01at \xff\x81\x01\x01last\xff\x80\xff\x8d\x01\x02\xff\x85\x01=uniting \xff\x81\x01\x01with \xff\x81\x01\x01the \xff\x81\x01\x01people \xff\x81\x01\x01of \xff\x81\x01\x01Heth.\xff\x99\x01\xa1\x00\xff\x80\x00\xff\xff\x00\x00\x00\x00'
b'\x00\x00\xff\xa9\xff\x9c\x01\x01\xff\x8d\x01\x02\xff\x85\x01\x01Golyat \xff\x81\x01\x01Quayside \xff\x81\x01\x01\xcb \xff\x81\x01\x01Quarter \xff\x81\x01\x01to \xff\x81\x01\x01Four\xff\x99\x01\xf1\x00\xff\x80\x00'
Formatted text (\xFF\x81\x01\x01
removed for readability):
b'\xff\xa9 \xff\x9c\x01\x01 \xff\x8d\x01\x02 \xff\x85\x01\x01 Coritanae Keep \xff\x99\x01\xc9 \n'
b'\xff\xa9 \xff\x9c\x01\x01 \xff\x8d\x01\x02 \xff\x85\x01= For nearly a thousand years, \xff\x893 the nation of\n \xff\x8d\x01\x02 \xff\x85\x01= Valeria endured, \xff\x893 leaving an indelible mark\n \xff\x8d\x01\x02 \xff\x85\x01= on the pages of history,\xff\x893 before at last\n \xff\x8d\x01\x02 \xff\x85\x01= uniting with the people of Heth. \xff\x99\x01\xa1 \n'
b'\xff\xa9 \xff\x9c\x01\x01 \xff\x8d\x01\x02 \xff\x85\x01\x01 Golyat Quayside - Quarter to Four \xff\x99\x01\xf1 \n'
FF A9
: Always at the beginning of the text
FF 9C ?? ??
: Black message on screen (voice) ???
FF 99 ?? ??
: Always at the end of the text
FF 8D ?? ??
: Always at the beginning of the line
FF 85 ?? ??
: Always at the beginning of the line
FF 89 ??
: Waiting time between text blocks ???
from gibbed.letusclingtogether.
Hi:
I'm sorry for the inconvenience but I would be interested in translating this game into my language, Spanish.
Checking everything, I see that it does not exist yet (or at least I was not able to find it) an .exe or app to do extract and insert text in order to translate it.
Is it within your plans to release an application similar to what I'm telling you about?
Thanks a lot
from gibbed.letusclingtogether.
Related Issues (3)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gibbed.letusclingtogether.