Author
|
Topic: FF7 NES Chinese Translation (Read 4 times)
|
Lindblum
Guest
|
|
« on: August 05, 2008, 02:30:23 pm » |
|
Everyone who wants to translate the FF7 NES ROM come directly to me! I've been checking all the boards and it looks like I'm the guy doing most of the work on this project (If I'm wrong let me know, because I don't want to find I'm wasting my time). It's been coming along quite well so far, and there's so much I can tell you about the ROM text encoding, and how I'm translating it. -And I don't even KNOW Chinese. The English PSX was already transcribed by someone called Little Chiba, and that document was translated to Chinese by someone called Zhongtian. His translation matches very closely to the ROM, so I can easily link ROM text to the English text. Well, it wasn't easy at first. I had to develop a way to convert the ROM's 2-byte hanzi into Unicode, but it was SO worth the effort. I had to extract the hanzi tileset and identify several thousand with a graphical kanji/hanzi lookup system. I may still need some help though. I'm hitting some issues when I try to insert my text into the ROM, and some memory constraints to deal with. A battle system fix would make it easier for me to get this done. Fights take forever, and I have to spread test points throughout the game. Let me know your thoughts!
|
|
|
|
RedComet
Guest
|
|
« Reply #1 on: August 05, 2008, 09:00:02 pm » |
|
Awesome news! I recommend implementing some sort of huffman compression if at all possible to alleviate your space constraints.
|
|
|
|
Dr. Mario
Guest
|
|
« Reply #2 on: August 05, 2008, 09:27:17 pm » |
|
Honestly I don't know the first thing about doing game translations, but if you're interested at all, if you want to spruce things up a bit, I can give you these guys to go along with your text boxes
|
|
|
|
Lindblum
Guest
|
|
« Reply #3 on: August 07, 2008, 09:35:38 am » |
|
Dr. Mario, I'm kinda getting used to the avatars (I think I read they're from a Gundam game). I do like the ones you posted, though. Maybe they can go into an 'improvement patch', but I haven't really decided if such changes belong in a translation patch. They deal with different parts of the memory, so if they were applied as separate patches to the same image they should still work together. I'm not impressed with Barret's map sprite, but that falls into the same issue. How did you get these images?
RedComet, Since this is a reverse-engineering project I'm stumped on the prospect of how I'd apply text compression. Let me tell you what I DO know. Let's talk about what I call Dialog Block 1.
37FD0: Dialog 1 Header 38010: Pointer to Dialog 1a (Addr=Ptr+30010) 38012: Pointer to Dialog 1b (Addr=Ptr+30010) 38014: Pointer to Dialog 1c (Addr=Ptr+30010) ...[FF][FF][40] 38019: Dialog 1a Pointers (Addr=Ptr+30010) 38217: Dialog 1a Text ...[FF][FF] 3B2DA: Dialog 1b Pointers (Addr=Ptr+30010) 3B4D6: Dialog 1b Text ...[FF][FF] 3E185: Dialog 1c Pointers (Addr=Ptr+30010) 3E20D: Dialog 1c Text ...[FF][FF][FF] 3EDDF: Free Space [00]... 3FFD0: Tileset Header ...?
When a pointer references text if the 1st byte is [40] ('@') the following 3 bytes are ASCII-encoded numbers to tell which avatar to use. @001 is Cloud, @002 is Barret, @028 is a shinra soldier... Avatars aren't always used though. Text is encoded in 2-byte hanzi, and 1-byte ASCII characters (alphanumeric and punctuation, all with ASCII byte values. Rare in a NES ROM). The first byte of a hanzi is [B0-C3], the second is [A1-FE]. They are valued approximately in the order of appearance in the game. Every line ends with [0D][0A] ('\\r\\n'). If that isn't there the speaker will leak into the next guy's line in-game. Every time you change the text you have to update the pointers. I have a process to take care of these for me.
Here's a little taste of my FF7 NES CH hanzi to Unicode map:    ï¼ï¼‘23456789ABCDEF ï¼¢ï¼ï¼¡ã€Œå·´é›·ç‰¹æ–°æ¥çš„è·Ÿç€æˆ‘哨兵入侵者皮 ï¼¢ï¼ï¼¢å…‹æ–¯å“‡ä½ 原曾ç»æ˜¯å†›äººè¿™ç§å¯ä¸å¸¸è§ ï¼¢ï¼ï¼£æ°æ£®å£«é‚£å—他为什么和们雪崩组织在 ï¼¢ï¼ï¼¤ä¸€èµ·åˆ«æ ·ä¸ªä½†å·²é€€å½¹çŽ°ä»½å了对还知 ï¼¢ï¼ï¼¥é“åå—呢劳德嗯感兴趣次任务结æŸå°± ï¼¢ï¼ï¼¦è¦ç¦»å¼€é‡Œè¯¥æ»éƒ½å¹²æƒ³è¯´è¿‡å§è¡ŒåŠ¨ç›®ã€ ... *sorry if columns don't line up in this font. See how the first 3 hanzi make Barret's name?
What's neat about this is that after I have eliminated the need for these characters I can take advantage by using them to squeeze common 3-letter sequences and squeeze them into 2-byte units. This could also come in handy with all those apostrophes. I don't know yet if I'll end up doing that. I WILL use this space to store icons for item, weapon, armor, and materia names.
WHEW! Drink that in!
|
|
|
|
Lindblum
Guest
|
|
« Reply #4 on: August 07, 2008, 09:39:01 am » |
|
I might have to start this as a new forum topic if we continue in this direction.
|
|
|
|
I.S.T.
Guest
|
|
« Reply #5 on: August 07, 2008, 09:40:17 am » |
|
Please do not double post unless the previous post is more than 7 days old or is no longer on the first page of the sub-forum it's in.
|
|
|
|
RedComet
Guest
|
|
« Reply #6 on: August 07, 2008, 09:42:59 am » |
|
You're correct in thinking that compression won't help you with reverse engineering the text format. What I meant was use compression to fit the English text back in the ROM. As for the character portraits, they're from Super Robot Wars. At least some of them are. My thoughts on the translation are to give the game a full scale face lift. Edit the graphics so that the areas look like their FF7 PSX counterparts and rebalance the game. It's way too time consuming and difficult. EDIT: I went ahead and split the old thread up. Please post in this new thread about FF7.
|
|
|
|
Lindblum
Guest
|
|
« Reply #7 on: August 07, 2008, 10:08:23 am » |
|
RedComet, I'm in full agreement that the battle system needs balancing, and a translation patch is as good as any other excuse to fix it. It would even help me just to get through the game to test my translation for bugs. We can either power up attack and magic strength, but rigging enemy HP would be much easier to do. I've spent hours leveling up and still hit single-digits It pays to level-up attack materia, but the frustration is incessant. Thanks for moving the posts. I left a link on the other thread to point to here. (When I saw my posts were gone I thought I was banned! LOL!) I have finished translating Dialog Block 1 (there are at least 5. 2 and 3 are half-done) and reducing it to an acceptable size. There are several limiting factors on memory. We can look back at my Dialog Block 1 byte map for reference. 1) New text cannot run into the consecutive statically-located memory block (In this case it's the "Tileset"). 2) Referenced text cannot be out of pointer range. I got these out of the way by simplifying redundant punctuation and text (I didn't "hack-it-up" to the point of real concern). Now let's get to my unresolved issue. See how Dialog 1 is broken into Header, and 3 sub-blocks (1a, 1b, 1c) with their own pointer spaces? The sub-blocks are memory-contiguous with each other. If I add text to one sub-block the following ones shift, which means the pointers to the sub-blocks have to change to keep up. I have made the appropriate pointer corrections, but my shifted sub-blocks still end up pointing to gibberish in-game. I considered maybe there are other pointers to fix that I don't know about. I have compared the Dialog 1 header to the Dialog 2 header to see which other bytes were variables, but they were identical with the exception of sub-block pointer values. I HAVE to figure out how to safely move contiguous sub-blocks without creating corruption. I still have to take more time to study the problem... EPIPHANY! I may not have to move them at all! Since all pointers in the same block have the same local addressing system, I can just throw the text that doesn't fit into the free memory area after the last sub-block. Just use it as overflow space. No one ever said the lines themselves have to be contiguous. It'll make the ROM's innards look a little chopped-up, but I think it'll do the trick! Cross your fingers for me...
|
|
« Last Edit: August 07, 2008, 01:45:46 pm by Lindblum »
|
|
|
|
Dr. Mario
Guest
|
|
« Reply #8 on: August 07, 2008, 09:10:12 pm » |
|
Dr. Mario, I'm kinda getting used to the avatars (I think I read they're from a Gundam game). I do like the ones you posted, though. Maybe they can go into an 'improvement patch', but I haven't really decided if such changes belong in a translation patch. They deal with different parts of the memory, so if they were applied as separate patches to the same image they should still work together. I'm not impressed with Barret's map sprite, but that falls into the same issue. How did you get these images?
Up to you, regardless I'll be asking you which avatar is which when you're done The avatars were made by me with touch-up work by setz and TGMagus. Anyways, it looks like things are going along well. I'm happy to see someone is working on this. Oh and balancing the battle system? Awesome. Oh PS: I swear Red XIII is a modified Cheetahman.
|
|
|
|
Lindblum
Guest
|
|
« Reply #9 on: August 08, 2008, 01:14:13 am » |
|
I had bug in my pointer-adjusting process and had to rewrite it. Ate up some time, but who cares, I have great news...it worked! I can leave sub-blocks exactly where they are, migrate the overflowing text into the empty space after the last block, and have everything work uncorrupted. I don't know 100% if there'll be problems when the game reaches Dialog Block 2. I'm 95% confident that will check out. This breakthrough alleviates almost all of my corruption concerns!
|
|
|
|
Vanya
Guest
|
|
« Reply #10 on: August 09, 2008, 09:26:44 pm » |
|
I'm very happy to hear that this is being worked on! I love retro gaming, and this project could be used at some point as a gateway for 8-bit remakes of some of the other FF's.
As for the portraits, I'd say that you are right that they aren't needed for a translation patch like this, but since the ones they used originally are mod'ed from another game I think the project would benefit from them. In a way the new portraits would make the game more *official* looking. I'd even look into adding them in myself.
Good luck with everything! =)
|
|
|
|
Lindblum
Guest
|
|
« Reply #11 on: August 10, 2008, 01:33:49 pm » |
|
If you guys want to put in new portraits, you can do that easily on your own. I've thought about it, but decided to keep the originals. To me the goal is not to make it look like the official FF7 game. It's more of a what-would-it-be-like if FF7 was released in the NES era.
All that business about sub-blocks before...that's all resolved. There was a bug in the pointer control of my script inserter.
Hey, I want to upload a patch of my current progress so cool people can give me feedback. Where can I do that? I don't want to put it anywhere too official, because it's only about 20% done. Your save points should still work, but if you use them the first enemy of your next battle may not display properly. That's no biggie, it goes away.
|
|
|
|
Vanya
Guest
|
|
« Reply #12 on: August 11, 2008, 10:12:54 am » |
|
Media Fire works.
|
|
|
|
Alex
Guest
|
|
« Reply #13 on: August 11, 2008, 10:33:30 am » |
|
Its great to know that someone is working on a translation of this game.
|
|
|
|
Lindblum
Guest
|
|
« Reply #14 on: August 11, 2008, 12:37:50 pm » |
|
Here goes, it's on MediaFire... http://www.mediafire.com/?ruvmibbaxblFF7NES-CH2EN-20percent.ips Remember, it's a partial translation I haven't figured out the title screen and menu selection names yet, they are stored separate from the main character set. Some unidentified enemies will have number codes for names. Dialog is pretty much done up to the pillar-collapse incident. Try it out. If there's bugs or text I missed along the way I appreciate screenshots, the Chinese text, or description of where you found it. When I'm a bit further along I'll probably put it out as a public Help Wanted request. I hear there are 2 versions of the ROM. This is the one with the black-and-purple title screen. Let's mosey!
|
|
« Last Edit: August 19, 2008, 01:13:29 pm by Lindblum »
|
|
|
|
|