gemot encubed  

Go Back   gemot encubed > Gemot > Production & Help

Production & Help For discussions regarding production aspects, especially localisation, of visual novels and related games.

Reply
 
Thread Tools Display Modes
  #1  
Old 2008-02-06, 18:00
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default NEXTON LCScriptEngine

Does anyone have any documentation/tools re: the SNX scripts used in NEXTON's LCScriptEngine (used in games like Moon. DVD)? The archive format was simple enough to write an unpacker for (xor everything by $CC and the normal [offset][size][filename] pattern was obvious enough), but apart from the fact that each byte of the SNXs are xored by $AA, I know next to nothing about the format, and I figured it would save time in figuring it out if someone had already done so. (I'm looking at you, zalas =p)
Reply With Quote
  #2  
Old 2008-02-06, 19:07
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Oh, and, for reference, I only care about replacing text with English. I don't want to rescript MOON. =p
Reply With Quote
  #3  
Old 2008-02-06, 22:49
zalas zalas is offline
 
 
Join Date: Feb 2004
Location: fushigi misuterii
Posts: 1,831
Send a message via ICQ to zalas
Default

I have the format somewhat figured out, and it was enough to translate ONE. However, things like being able to change the player's name is a lot tougher to line wrap. I can give you the tools that I used, but I can't really offer any support since I'm too busy with other stuff.
__________________
~Yoda is waiting in the air~ | HAVEN
Reply With Quote
  #4  
Old 2008-02-07, 00:09
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Quote:
Originally Posted by zalas View Post
I have the format somewhat figured out, and it was enough to translate ONE. However, things like being able to change the player's name is a lot tougher to line wrap. I can give you the tools that I used, but I can't really offer any support since I'm too busy with other stuff.
If you could supply the tools, I would be grateful. MOON. doesn't have anything for choosing the player name (you are Ikumi no matter what) so that's not really much of an issue.

Last edited by Asceai; 2008-02-07 at 02:14.
Reply With Quote
  #5  
Old 2008-02-07, 10:54
Unregistered
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Asceai View Post
If you could supply the tools, I would be grateful. MOON. doesn't have anything for choosing the player name (you are Ikumi no matter what) so that's not really much of an issue.
Most version of VASTT seem broken unfortunatly though, can't really export back on the newest version, while the older version would have others evil buggs too :p
But it's usable anyway imo
Reply With Quote
  #6  
Old 2008-02-07, 21:08
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Quote:
Originally Posted by Unregistered View Post
Most version of VASTT seem broken unfortunatly though, can't really export back on the newest version, while the older version would have others evil buggs too :p
But it's usable anyway imo
Well, VASTT uses python plugin modules for the different formats, so if nothing else it does document the format for me, which is more than enough.

Last edited by Asceai; 2008-02-16 at 22:38.
Reply With Quote
  #7  
Old 2008-02-08, 00:31
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Well, shoot, VASTT can't read MOON.'s scripts. I'll see if the change in the formats between MOON. and ONE is small enough to hack VASTT into reading it anyway.
Reply With Quote
  #8  
Old 2008-02-08, 00:50
AstCd2 AstCd2 is offline
Addicted
 
Join Date: Jul 2004
Location: Australia
Posts: 1,077
Default

VASTT operates using a different plugin for each different file format (or variations on file formats between games from the same company). You don't need to hack the program to get it to work, just make a new plugin.
Reply With Quote
  #9  
Old 2008-02-08, 01:12
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Actually, I was going to just use VASTT's existing plugin as a base, just so I can construct an automated tool (there are 119 scripts, and unless I missed something, I would have to import and export them manually)

EDIT: Okay, so ONE's scripts aren't encoded with the XOR filter, that's something.
EDIT: Nah, ONE's format is _totally_ different. Crazy. Never would have expected this.
EDIT: Dunno what I was really so worried about, the bytecode format is actually rather simple. Providing I don't have to rescript much this should be easy.

Last edited by Asceai; 2008-02-08 at 16:23.
Reply With Quote
  #10  
Old 2008-02-08, 23:12
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Well, after messing around with the archive format a bit (WHY does the order that the files appear matter? :<<<) and working on some tools, I can replace text... sorta.



I can fix the fact that the spaces between words don't work properly just by using a fullwidth space, I guess, but I've no idea how to fix the font spacing issue just now. Could someone who has found this issue with other games and resolved it post? I'm new to this =p

EDIT: I know a few pieces of the bytecode, now; enough to create new textboxes as needed, at least. Still no clue about the letter spacing. For now I'll use fullwidths.

Last edited by Asceai; 2008-02-09 at 00:01.
Reply With Quote
  #11  
Old 2008-02-09, 09:25
Unregistered
Guest
 
Posts: n/a
Default

May I inquire as to whether you will be translating the game, Moon?
Reply With Quote
  #12  
Old 2008-02-09, 12:28
Rasqual Twilight
Guest
 
Posts: n/a
Default

Try to detect the place in the exe where the font is created (with the CreateFont or CreateFontIndirect Win32 API call) then try to use a proportional font instead, e.g. Arial.

The structure used in CreateFontIndirect is:
Code:
typedef struct tagLOGFONT { 
  LONG lfHeight; 
  LONG lfWidth; 
  LONG lfEscapement; 
  LONG lfOrientation; 
  LONG lfWeight; 
  BYTE lfItalic; 
  BYTE lfUnderline; 
  BYTE lfStrikeOut; 
  BYTE lfCharSet; 
  BYTE lfOutPrecision; 
  BYTE lfClipPrecision; 
  BYTE lfQuality; 
  BYTE lfPitchAndFamily; 
  TCHAR lfFaceName[LF_FACESIZE]; 
} LOGFONT, *PLOGFONT;
Likewise, the CreateFont signature is:
Code:
HFONT CreateFont(
  int nHeight,               // height of font
  int nWidth,                // average character width
  int nEscapement,           // angle of escapement
  int nOrientation,          // base-line orientation angle
  int fnWeight,              // font weight
  DWORD fdwItalic,           // italic attribute option
  DWORD fdwUnderline,        // underline attribute option
  DWORD fdwStrikeOut,        // strikeout attribute option
  DWORD fdwCharSet,          // character set identifier
  DWORD fdwOutputPrecision,  // output precision
  DWORD fdwClipPrecision,    // clipping precision
  DWORD fdwQuality,          // output quality
  DWORD fdwPitchAndFamily,   // pitch and family
  LPCTSTR lpszFace           // typeface name
);
* lfCharSet should be set to ANSI_CHARSET (0) instead of SHIFTJIS_CHARSET (128, or 0x80)
* lfPitchAndFamily should have bit VARIABLE_PITCH (2) flagged instead of FIXED_PITCH (1)
e.g. if the value is 0x65 (0x64 | 0x01), change it to 0x66 (0x64 | 0x02)

Nevertheless, be prepared to obtain non-optimal results, as generally Japanese games tend to assume characters fit on a grid (hence the monospace thingie, some VNs draw text character by character and place them, instead of drawing the string on a bitmap and blit it onto the main surface).
At worse, you'll have to write the text layout routines (word-wrapping, etc.) by yourself, as Haeleth did with rlBabel, for RealLive, IIRC.



EDIT: Link to past thread where I raised the issue.

Last edited by Rasqual Twilight; 2008-02-09 at 12:33.
Reply With Quote
  #13  
Old 2008-02-16, 22:34
Asceai's Avatar
Asceai Asceai is offline
Posts way too much
 
Join Date: Mar 2007
Posts: 1,413
Default

Well, I've hit a bit of a brick wall for the time being. The issue is with jumps in the script, and more importantly, identifying them. Because I don't know 95% of the bytecode, including any jump commands other than the pure $10 ## ## jump, I've no idea how I'm going to record all those for offsetting later, other than fully documenting the bytecode, which is rather detailed and I don't really want to do it.

In addition, although I've found at least one of the jump tables used when interpreting the script, from there it's still difficult to work out what each command does. But if anything's going to happen with a MOON. translation, it's definitely going to require documenting at least some of the bytecode, so there's no real way around it. I want a MOON. translation so I'm not going to give up just yet =p

Last edited by Asceai; 2008-02-16 at 22:37.
Reply With Quote
  #14  
Old 2008-02-23, 15:55
Unregistered
Guest
 
Posts: n/a
Default

This isn't related to the engine, just me sucking up Asceai for being such a sexy god.

Asceai, I fucking love you right now. I bought MOON. like two months ago on a whim, was about to start playing it now (with Atlas and Wakan.. not enough moonspeak to play MOON. yeah, there, I said it.) like an hour ago, decided to check this forum for no particular reason, saw this thread.

I seriously love you right now. A hope for a translation (project) is better than no hope whatsoever. Kind of a letdown to stack MOON. back in a shelve for months and months to come, though.
Oh well, FARGO can wait. Now, gotta start refreshing this every five minutes.
Reply With Quote
  #15  
Old 2008-02-23, 18:49
Chiyuri
Guest
 
Posts: n/a
Default

If the translation is going to happen, I sure want to have it.. I got the game like a week ago after trying for months to get it but I even did my best to find a way to make it work on my computer. But now that it finnaly work, I come upon the problem that I can't pull out the text from the game while playing and so can't translate any..

a translation sure would help me..

It's one of these rare game where I can play a character nearer to myself. (Most game these days have a male characters as the main one.. As a girl, I don't like playing as a man much) so such a rare game is very tempting into playing.)
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may post new threads
You may post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 15:33.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2023, vBulletin Solutions, Inc.