gemot encubed  

Go Back   gemot encubed > Gemot > Technical Issues

Technical Issues For bug reports, problem solving, and help running Japanese software.

Reply
 
Thread Tools Display Modes
  #16  
Old 2006-12-09, 02:00
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

For the name thing, edit 0x000E855C in a edit editor. It's the japanese ???s that display when a character's name has a @ in front of it. 0x000E8554 is 】 and 0x000E8558 is 【. You'll want to edit all of those to work with the korean translation.

Do you think you could upload what you have done of the translation so far (or at least up until parts where there are speaking) so I could see what kind of changes you made? The character's mouths move when I'm using the original script so I think it's something you might've done.

Last edited by kyun; 2006-12-09 at 02:05.
Reply With Quote
  #17  
Old 2006-12-09, 07:32
Vlobulle
Guest
 
Posts: n/a
Default

For the space problem, I used umbreakable spaces ( ) (xA0 in the ansi-1252 charset), which are correctly displayed (but I don't know if there is the same kind of space in the charset you are using).

And I simply deleted all the control caracters, until I get something better to work. (and added a simple hack to remplace one specific caracter with a line break, thus I can make something not to ugly)

And for now I don't seem to have any voice problem.

Reply With Quote
  #18  
Old 2006-12-09, 08:42
blauerbrief
Guest
 
Posts: n/a
Default

for kyun
http://thehighwind.net/temp/efscript.rar

This is edited script and original script.
and Korean Edited Exefile..

Kyun, thank you for supporting me.

hmm..
Would you join our Minori's game Korean Localizing project?
your support is great help.

for Vlobulle

your advice is thanks. but, A0 is not space in Korean.
and not voice problem. Character Mouth Animation Problem.

Last edited by blauerbrief; 2006-12-09 at 09:07.
Reply With Quote
  #19  
Old 2006-12-09, 10:13
Vlobulle
Guest
 
Posts: n/a
Default

I just tried : the game can perfectly show normal spaces, the trick is to replace some useless character with the space just before it's drawn (and after it has been read, because usual space seems to be used as a control char by the script).

For exemple, let's say that x2A is an useless one-byte char in your charset (in fact it's a *, since I don't know the Korean charset at all, but I'm sure there are some other).

At 0043573D, simply insert something like:
if ESI == 2A, then ESI = 20

(of course there is the little problem of writing the if statement at the right position, I used a call to the end of the file, where there are plenty of zeros)

Thus, each time the game will read a x2A, it will display a space.

It's ugly (I'm not used to meddle with debugging), it requires to make a tool to convert an human-written script into a game-parsable one, but at least, it works (I use it for the space and the line break).

By the way, sorry, I was also speaking of the mouth animation.
Reply With Quote
  #20  
Old 2006-12-09, 11:01
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

Quote:
Originally Posted by blauerbrief View Post
Would you join our Minori's game Korean Localizing project?
your support is great help.
Sure, I'm willing to join. What's the most convenient way to communicate for you?

About the mouths, you have to be really careful about editing. I can do that part if you want. Here's the new EXE with the 【???】 fix and the new 100_01.sc.
http://www.sendspace.com/file/0gt481

Last edited by kyun; 2006-12-09 at 11:05.
Reply With Quote
  #21  
Old 2006-12-09, 11:36
blauerbrief
Guest
 
Posts: n/a
Default

[] Problem was solved. it's working. thank you.
but program with Korean text, Mouth animation still won't working....
and we have ( ) space problem.
hmph. it's not important, but ( )space for perfect Korean sentence..
( ) space is ugly.

Thank you for joining minori project.
If you need contact me, send email to blauerbrief_at_gmaildotcom (sorry. goddamnspam)
or MSN - blauerbrief_at_hotmaildotcom

Last edited by blauerbrief; 2006-12-09 at 11:42.
Reply With Quote
  #22  
Old 2006-12-09, 11:55
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

I added you to my list but it looks like it added you to both of my accounts for some reason (I'm not sure if it sent an add from both, but it added you to both lists). Just ignore the other one if you received more than one. I'll talk to you some more about it on MSN.
Reply With Quote
  #23  
Old 2006-12-10, 06:29
blauerbrief
Guest
 
Posts: n/a
Default

I finally finish ef trial version Korean Localization.
Thank you, Nagato(kyun), Vlobulle, roxfan.
Reply With Quote
  #24  
Old 2006-12-11, 08:15
Unregistered
Guest
 
Posts: n/a
Default

What is this program you are using? Does it let you edit in that view, too?

I'm still stuck in the dark ages, editing things manually in a hex editor... something a little easier to use without separate dis/re-assembly would be nice.
Reply With Quote
  #25  
Old 2006-12-11, 10:09
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

The program is called ollydbg. Yes, you can edit in that view as well. It's a very useful program for ASM editing.
Reply With Quote
  #26  
Old 2006-12-22, 18:27
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

roxfan, is there any chance you'll be updating your paz tools for the full version of ef? They changed the paz format a bit. From what I could tell (I'm not sure how to decrypt blowfish stuff so I couldn't really do much), the first 4 bytes aren't there anymore and it goes right into the data. I already did the keys for it if it helps any:

Code:
[scr]
Key1=ECA15A7AD0797AFF06D430CFB80480373E861EB27C08441457420BC82B0CF4C7
Key2=2A96DAE6CFB3D59C77578EE39E03E42A49382FDD1283BA7A668A03F3ABCA8EA7
[bg]
Key1=15EDC3CAC77B6DD638F51A91503D94853985BE561EA0F01BA31D7892D10DB6BD
Key2=D636FD61EADD221136D010946785F7845AD65F5FFDC5A1D2727BBC6A81F653D5
[st]
Key1=908072D3072E3DB95CC899C812B558A3C88EB2FF5AC78C629865FA84D40A9EFA
Key2=BC256924433F7B2382263D9C7B5CD7355FC626C366F64814376C6CF8EA733693
[sys]
Key1=13295549BB673517D3434F47EE5E64144E038A121FED0EBF626D96F7CED9F030
Key2=6CAA903D57255799EB65C5CFB1B9E2277AF13093BDEFE979AF5DAC91BED05315
[bgm]
Key1=F669D5A10E21CCA01863C3B343DFCF0FE31427C6557B9FD478EB3C5B1F9F6DB6
Key2=6B99AD59CFB0ED3D3D83E108D78ED33CA2220E01237100598B83CF776B9745CE
[voice]
Key1=22BF45D9430AEF7DBA3D955D42AF39900BC24C8C720D0881085A3064C70B8F8D
Key2=A13BBA883AA3DD0C3092A8ADFE258014CD5B0D579D8A219CED2DB8D682320D3A
[se]
Key1=739EB8FD201A9CFC1B2D4483153C066579888CCD7526B3E59C35608598149053
Key2=CC17292610A9201817B8DDF0D262CD4453CE389881B6B4313F081CA0AAF3866E
[mov]
Key1=75E3E540C95B7717344AD9C712E35ABB31608DDB0457FDC295C40A7A14B5C008
Key2=402870548C92DDBFF2C8EC432F420FC9540F6531F47BE0DA35211C8D964E7361
Reply With Quote
  #27  
Old 2006-12-23, 00:17
rednaxela rednaxela is offline
Regular
 
Join Date: Dec 2005
Posts: 48
Send a message via MSN to rednaxela
Default

the length of index is now located at 0x20, and it has been encrypted with simple byte-level xor.
you don't really have to know how blowfish works, though, just use open source libs that can be found everywhere. the blowfish part in full ver. of ef hasn't been changed much.
__________________
Tomoyo's the best wife I expect...
Reply With Quote
  #28  
Old 2006-12-23, 03:16
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

If it's not a problem, do you think you could check to make sure I'm doing the xoring part right? For the script file, I get 130Bh. What do you do with the 32 bytes before that? Ignore them?
Reply With Quote
  #29  
Old 2006-12-23, 11:15
rednaxela rednaxela is offline
Regular
 
Join Date: Dec 2005
Posts: 48
Send a message via MSN to rednaxela
Default

most of the first 32 bytes seems to be garbage (but i'm not sure), but you want to notice the byte at 0x08, that's the byte you'll be xoring with before you get to BlowfishDecrypt.

so, you'd:

> read in the first 32 bytes in the archive, save the byte at offset 0x08, and then dump the rest of them
> xor this "key byte" with every byte of a 4-byte integer at offset 0x20, and that's the length of index
> read in the index, xor hrough it with the "key byte", then BlowfishDecrypt it with the first set of Blowfish key. now you've got the index ready to use
> to extract files from the rest of the archive, xor with the "key byte" first and then BlowfishDecrypt.

just to mention that, in full version of ef, the initialization of pbox is somehow different from standard Blowfish and from ef_trial. in ef_trial, you have to negate every key byte before it's used in an otherwise standard Blowfish init.

so if you had a standard implementation of Blowfish, in ef_trial you'd: (pseudo code)

negateAllBytes(key1);
BlowfishInit(key1);

now in full version you have to do something tricky, so let's get more into the details of what would be a part of BlowfishInit. the code snippet below should replace the round of xoring pbox with the key for Blowfish: (in C++)

suppose:
unsigned int pbox[18]; // the pbox of Blowfish
byte* key; // pointer to the key for Blowfish, and that the length of key is always 0x20 in minori's games
then,
Code:
unsigned int ofs = 0; // offset of current byte in key

for (int i = 0; i < 18; ++i) { // iterate though pbox
	unsigned int build = 0;
	for (int j = 0; j < 4; ++j) { // retrieve 4 bytes from the key at a time
		byte currentByte = key[ofs];
		
		/////////////////////////////////////////////////////////////
		// this switch is what's different from the standard Blowfish
		switch (ofs % 6) {
		case 0:
			currentByte ^= 0x6D;
			break;
		case 1: case 5:
			currentByte ^= 0x69;
			break;
		case 2:
			currentByte ^= 0x6E;
			break;
		case 3:
			currentByte ^= 0x6F;
			break;
		case 4:
			currentByte ^= 0x72;
			break;
		}
		/////////////////////////////////////////////////////////////
		build <<= 8;
		build |= currentByte;
		ofs++;
		ofs &= 31; // ensure ofs doesn't go beyond 0x20
	}
	pbox[i] ^= build;
}
and that's about it...hopefully i made myself clear enough. read the algorithm of Blowfish should the code snippet above be confusing
__________________
Tomoyo's the best wife I expect...

Last edited by rednaxela; 2006-12-23 at 12:58.
Reply With Quote
  #30  
Old 2006-12-23, 12:30
kyun kyun is offline
Member
 
Join Date: Oct 2006
Posts: 13
Default

That makes a lot of sense now. The code snippet I'm going to have to look at more, but the beginning part with 0x08 being used to XOR the 4 bytes at 0x20 helped a lot. :) I'm looking at the code now used for ExtractData and this is their decryption routine:

Code:
void Cef_first::Decrypt(LPVOID data, DWORD data_size)
{
	BYTE deckey = m_deckey;
	LPBYTE pData = (LPBYTE)data;
	for (int i = 0; i < (int)data_size; i++)
		pData[i] ^= deckey;
}
m_deckey is the byte at 0x08 if I'm reading the init code correctly. Cef_first::DecodeKeyTable() is very similar to what you have in your code snippet too, so it helps to see it in action.

I'll see what I can do with the information you've provided and the code I'm looking at now. Thanks for the help. :)
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

Similar Threads
Thread Thread Starter Forum Replies Last Post
About Minori Unregistered General Discussion 50 2010-08-02 01:29
about minori's *.paz format (especially ef - the latter tale) blauerbrief Production & Help 0 2009-05-21 18:27
Question about minori game localization (2) blauerbrief Technical Issues 13 2007-11-06 13:08
Haruoto and minori game discussion Misu General Discussion 17 2007-03-18 09:55
Wind: What the blazes is the .paz format Carl Technical Issues 4 2006-05-13 11:57


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


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