Page 62 of 153

Re: Current Project Status (English Screenshots & Trailers)

Posted: Mon Jul 14, 2008 2:36 pm
by Elijah Modnar
Read back through other posts and you will see what i mean there has been a few different explanations of why this isnt possible. If it was that easy the translation would have been out for about a year now.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Mon Jul 14, 2008 9:09 pm
by JimboKudo
Yes, that would be quite messy.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Mon Jul 14, 2008 10:05 pm
by Junker Gear Snatcher
Yeah, no one here is saying your ideas aren't good ones, it's just that coding can be funny, the slightest thing can cause GREAT problems.

And unfortunately, I'm guessing the coding problem wasn't even identified until after the translation was done and the coding began.

It's NOT easy..

I worked with a guy that coded websites, and you wouldn't believe the problems.

And it's made even worse by the fact that the team's coder (sorry, I'm new here so I'm not familiar with everyone) wasn't the guy that worked on the original code, so it requires some extra tinkering and reverse-engineering.

Things like this are EXTREMELY attention-consuming, patience-consuming, and a general pain in the backside.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Tue Jul 15, 2008 6:32 am
by Pizuz
I thought that the code was already finished, but the translated text consumed too much space on the CD.

The idea was to insert the translated text until the point where it consumed too much memory, say the first half of the game, then tell the player to save and reboot using the other disc - this could be done by letting a character say this. The rest would be blank fields consuming probably one byte per text box or something that creates an exception fault if read.

The second CD would contain the rest of the script and maybe a replaced opening FMV warning users that they were using the wrong CD, if someone clueless guy attempted to start a new game on this CD.

This would basically mean NO additional coding at all.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Tue Jul 15, 2008 10:55 am
by Artemio
You are misreading the information Pizuz. It has all been explained in older pages.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Tue Jul 15, 2008 3:44 pm
by Pizuz
I'm sorry, I really misread this. Say, did you already ask the Phantasian Productions team? Their main hacker, Habilain, managed to incorporate DTE (which I believe should fix your RAM problems) into Tales of Phantasia, so he might be able to lend you a hand with your problem.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 12:38 pm
by X_Lupin
I've actually dreamed up a way to solve the problem, but it wouldn't work on the original PSX hardware, which Is something I know you guys have as a general goal.

But, speaking in terms of an emulator, all the system's hardware is emulated on your machine. So what I'm thinking, is that we could take a PSX emulator, and tweak the coding of the actual "soft hardware" so that it is MADE to accommodate the added text. Similar to how Genesis emulators include extra options that allow you to switch out the "hardware", such as a high quality YM2612, and that sort of thing.

Thoughts?

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 2:02 pm
by Elijah Modnar
Thats actually some good thinking most people who will be playing the translation will be through emulation, i know i will, although i would think the lads working on this would prefer to have an accross the board launch, but i could only hope they prove me wrong.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 2:17 pm
by Artemio
That implies exactly what needs to be done but in reverse order. You need to modify the code of the game (the program) in order to accommodate and display everything correctly. Coding an emulator for that purpose would be totally overkill and imply tons of work that would be in excess of what is needed.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 3:12 pm
by JimboKudo
But would it be faster?

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 3:25 pm
by Junker Gear Snatcher
Quality over quantity.

Enough time has been put into this, I say take a page from Blade Runner and just whittle away at it... long as we don't whittle away first. LOL.

Bad joke, I know. #-o

Artemio, you're the one in charge of the coding correct. Details and specifics aren't needed, but I merely ask:

Do you have any ideas what needs to be done? Some kinda CoA?

I'll take a mere "yes" or "no" as an answer, if that's all you want to part with.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 4:51 pm
by Pizuz
You should really try to contact the guys over at http://www.tales-cless.org (Phantasian Productions) for help including a dual tile encoding routine into Policenauts - as done with the PSX version of Tales of Phantasia. All their projects are currently in a state of translating while all the hacking is basically finished. I don't think that there would be any hostility towards you.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 5:22 pm
by Artemio
No, I am not in charge of the project's coding. I was in charge of text dumping, but as said a couple of times earlier in the thread I have had no time to go into the ASM hacking needed for this game. I'd love to be a college student and to have all the time to do it, but that time is gone. I can still give brief lapses now and again, but not 100% dedicated.

And dual tile encoding is not nearly enough to accommodate the text, a quick stat showed that. Only 30.24% of the text would fit in with it. The amount of letter pairs needed is easily fit in the character table, but the amount of text is way larger. Just to put it in perspective, a byte to byte fitting is what would give that 30.24% figure.

To clarify this point, dual tile means inserting two characters on each tile that represented a single Kana/kanji in the original, and hence getting the double of space out of the game for each single line of text. This is possible since the original text is a two byte encoding, and thus you gain a 1:1 ratio on bytes per character in the actual files. The good thing about this method is that actual coding is probably not needed in terms of hacking the ASM executable of the actual game, you only need to edit the character table (an image) that is in a binary format specific to the game (not a piece of cake, but a great method when possible).

And no, coding an emulator wouldn't be faster. If a person with the time and knowledge is fully available, it would be faster to hack the game than to code an emulator. An analogy would be if it is easier to mod an existing car to tune it or to design a whole new car and build it from scratch.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 5:50 pm
by Pizuz
You got it almost right. Dual Tile Encoding means getting two letters out of one byte. Under certain circumstances. Which means that under ideal conditions you could squeeze 2048 letters into one kilobyte of text.

This can go as far as storing entire words in one byte, if it's used often enough.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 5:51 pm
by Artemio
Pizuz wrote:You got it almost right. Dual Tile Encoding means getting two letters out of one byte. Under certain circumstances. Which means that under ideal conditions you could squeeze 2048 letters into one kilobyte of text.
That is only true when each byte represents a tile. You got it almost right. In this case the game uses two bytes per tile. That means you can get 1024 letters into 1 kilobyte, a 1:1 ratio as described above.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 6:00 pm
by Pizuz
With 65536 possible permutations you should be able to get a "word-per-tile" approach ;) Which would waste a lot of space ^^

So basically someone would have to alter the text routine to use one byte per tile and apply DTE afterwards. This would give us the two letters-per-byte ratio and save tilemap space, too (only 256 tiles left instead of 65536) which could be used to store text.

My logic tells me that this might save just enough space.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 6:01 pm
by Junker Gear Snatcher
Okay, I know ABOUT the process of text-dumping, that's when you basically convert and extract (or extract and convert) Binary or Hexadecimal code, looking for something in particular, in this case, you were extracting the japanese text, right?

What I know, I only know because at one point I was a gameshark/action replay junkie (only skills I got was being able to identify hexadecimal..)

I've never had an interest in learning how to code, but I wish I did now. If I had learned coding say a year or two ago, and found this site, I would have jumped on board in a heartbeat. I'd go out and try to learn now, but in a month I'm back to School and my free time would be shot..

Guess I can only cheer from the sidelines..

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 6:29 pm
by Artemio
Pizuz wrote:With 65536 possible permutations you should be able to get a "word-per-tile" approach ;) Which would waste a lot of space ^^
Hehe Not quite, but I get your joke.
Pizuz wrote: So basically someone would have to alter the text routine to use one byte per tile and apply DTE afterwards. This would give us the two letters-per-byte ratio and save tilemap space, too (only 256 tiles left instead of 65536) which could be used to store text.

My logic tells me that this might save just enough space.
Then you arrive to the real problem, and the one described pages ago. You need a programmer to hack the game's code. Then DTE means nothing, because you can simply alter the length of each message.

Maybe you are confused as what the problem with space is. You see, in computer programs and in computer data in general, certain bytes or chains of bytes are used to encode stuff. In the case of letters or characters you already know the drill, 65 is A, 66 is B, etc. Under the same logic, you can make 0x0A and 0x0D to encode a line break and return, just our ASCII that you are reading is actually doing. The mysql database here has those characters encoded each time I press enter here.

Just like that.

You saw a line break and a line feed there, even though they were just two extra bytes in the middle of the bytes that represent the words I am typing. As such, a specific code is needed to determine when a sentence ends, and I am not talking about punctuation here (or I am but in a completely different context). You might use a null character to tell the program that there is no more text to print under the current message, and as you can imagine that is just a sequence of bytes.

The program then does the following when told to print a message: it goes to a specific address withing the game data (an offset in a file in this case) and prints characters following it's own internal rules until it reaches the end of the specified message.

As you can probably imagine by now, all that text is encoded sequentially on the data files for the game, and if you alter the length of a single message in there you simply move all the next messages by an offset equal to the difference in length of the message you changed. Keep that mental image of how much data is changed by a single byte. Now all that data is within the program's code.. and you have to change every reference to every call whenever a line of text is accessed by the game.

Yes, that is a lot of references.

That is the space referred to when talking about the text not fitting. It is not the that CD has no space for the translated text, it is that the current structure doesn't.

As you can see it is probably easier to recode the engine that prints the text, and just have a conversion table of addresses in there... to map to new addresses that hold our text in the manner that we prefer.

i am not saying that is the only solution, but it certainly is the sanest. Unless of course you have the complete pointer table that encodes where every line of text should be, and provided it exists, that you can manipulate that at will with programs created for the purpose...

And just for reference, here is a screen of the actual table used in the game:
tile.gif
tile.gif (1.59 KiB) Viewed 5673 times
As you can see, it is a 10x10 pixel character table. With DTE you'd be making 10x5 characters, and that is under the assumption that you need no separation between them (which you do).

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 10:28 pm
by JimboKudo
I think Artemio just gave the ultimate answer possible. Hopefully, whenever people come in here and ask, "What's the problem?" they can be referred back to that post. It really cleared up any of the suggestions and questions I had. Now that I understand exactly what program, I won't ask anymore needless questions. That's at least good.

Re: Current Project Status (English Screenshots & Trailers)

Posted: Wed Jul 16, 2008 11:03 pm
by The Spoony Hou
Oh, that's the problem... I thought you couldn't change the pointers for some reason, but it seems the reason is that... there are a LOT of pointers :P.

Don't all the translations just change the pointers?

Re: Current Project Status (English Screenshots & Trailers)

Posted: Thu Jul 17, 2008 12:16 am
by akizzle
I am new here (first post as you can see)

I just wanted to say that I support this cause!!!


I have been following this site for a couple weeks, shortly after beating Snatcher for the first time on my Sega CD, and I must say I am pleased at all the hard work and dedication. If I had any programming experience I would lend it, but I am just a structural engineer - no coding knowledge required :???:

Re: Current Project Status (English Screenshots & Trailers)

Posted: Thu Jul 17, 2008 12:17 am
by Pizuz
I get what you were talking about. However, please allow me to aks one last question before I stop making suggestions:

You said that those pointers were hard-coded into the game's engine. I suppose that you won't change the amount of text boxes in the game (there won't be any new sentences in the dialogues that would require additional pointers, will there?). Therefore, by translating you'd have to change those references, anyway.

So, which one is your problem? Is it fitting the text you translated into the RAM (could be solved by moving it into parts of the tilemap space that are unused - 1kb every ten unused characters - and making the references point at this different location) or is it readjusting those references?

Re: Current Project Status (English Screenshots & Trailers)

Posted: Thu Jul 17, 2008 12:21 am
by akizzle
Also, I have a cousin who loves coding and wants to further his skills - but he's mainly familiar with C - could that be of use? I would think a general understanding of coding would be useful.

Anyway, he told me he was looking for things to code (about 2 months ago). I guess he wants to improve his skillset as a physics graduate. Since I have been coming here I have to mention it because maybe it is a sign. I haven't talked to him yet - but if he is still interested - could you use someone like him?

Thanks,

A-K

Re: Current Project Status (English Screenshots & Trailers)

Posted: Thu Jul 17, 2008 9:28 am
by Artemio
Pizuz wrote:I get what you were talking about. However, please allow me to aks one last question before I stop making suggestions:

You said that those pointers were hard-coded into the game's engine. I suppose that you won't change the amount of text boxes in the game (there won't be any new sentences in the dialogues that would require additional pointers, will there?). Therefore, by translating you'd have to change those references, anyway.

So, which one is your problem? Is it fitting the text you translated into the RAM (could be solved by moving it into parts of the tilemap space that are unused - 1kb every ten unused characters - and making the references point at this different location) or is it readjusting those references?
Again you are missing the point my friend. The problem is that we don't have a programmer that can be working full time hacking it. It has been said more than one time.

But in response to your question, you can certainly create new sentences, if you re-read my posts above I talked about meta-punctuation, when speaking about control characters. You can always insert a new line break anywhere if the length allows it or if you hack the engine or if you change the pointer table.

But as you can see it is not a matter of just time, it is a matter of knowledge/skills. I am a C/C++ developer mainly, I do so as my full time job designing and programming real time applications for TV stations which involve low level code and hardware. And I know I don't have the knowledge needed right now (MIPS ASM). I would need to invest some time (months?) in learning what I need and then just doing what is needed. I know what to look for and what solutions to apply, but I don't have the time in my hands.. as mentioned earlier I'd love to have it. The problem is getting someone not only willing to do it, but capable and on top of that, with the time.

But we'll get it done.

viewtopic.php?p=20870#p20870

Re: Current Project Status (English Screenshots & Trailers)

Posted: Thu Jul 17, 2008 3:53 pm
by Pizuz
You did a great job obfuscating your point ;)

Anyway, I know some C64 assembly - which is probably not suited very well here, but anyway, I know how to read stuff in a debugger and I have some ideas how to perhaps get this working. With some collective thinking we might be getting to something.

There is one problem: I figured from what you said in that newsletter that the hack is basically finished and last remaining problem is fitting the text into the RAM. What you didn't tell us the whole time was how much space would be needed in the worst case and how much the game provides.

As you mentioned in your newsletter, you thought about moving the text into a different memory location. My idea was to use a portion of the tilemap memory formerly filled with hundreds of Japanese letters. Taking into account that removing ten 10x10 tiles already frees 1 KiB of memory we might be able to fit a decent amount of text in there. The question is: How many letters does the game originally use? 500? 1000? And how many tiles does your hack use (about 80, I assume)? I really don't know, but I'd like to.