Author
|
Topic: So how could I move on in Fire Emblem right now? (Read 2 times)
|
Rai
Guest
|
 |
« on: April 04, 2008, 12:44:03 pm » |
|
Well recently I've been doing a translation hack of Fire Emblem and I basically need advice on how to move on with it. So far I've found the pointers for the names and stuff, but in some places in the game the game, there's just not enough space to insert text, even with pointers. This is ESPECIALLY true for the dialogue, which I'll need a ton of space to insert. So yeah, basically I'd like some advice on how I could move on with inserting the text and such.
|
|
|
|
Kagemusha
Guest
|
 |
« Reply #1 on: April 04, 2008, 12:59:04 pm » |
|
I don't know if you read through your last topic, but a bunch of people told you what you could do. I believe the main method was DTE, but there are few requirements that must be met before you can code your routine. The first thing you have to do is find the ASM that loads the text routine or some such. This is done by calculating the pointer for an end of text control code. You must then find the pointer in RAM. Once you have found the pointer in RAM, you do a trace dump when the text is loaded. Then you search your dump for a LDA ($?). The ? is for wherever the pointer is stored in RAM. Well, I don't feel like explaining anymore, but the given information should be okay, but no guarantees though. Last condition is that the game must have free space in the PRG ROM for the DTE routine and table to go. If the game doesn't, you can expand the PRG ROM(Maybe, depends on the mapper) and do a bank swapping routine to access the free space, but that also requires some free space.
|
|
|
|
Tauwasser
Guest
|
 |
« Reply #2 on: April 04, 2008, 01:09:10 pm » |
|
You could also put all text in a new bank (of course only if it fit's into a whole bank) and look for the code Nightcrawler provided you with (the text location one) and then check out if you can get the game to read from another bank instead of the old one. Also, if you have more text than fits in one bank, you can reprogram the old routine to read the table differently and maybe set-up a special bit or something in the table that's already there that tells the game to use another bank still. That's imho way better than dte, especially with the problems of the text printing unsymmetrically. But that's all your call! Look what would work best for you!
cYa,
Tauwasser
|
|
|
|
Kagemusha
Guest
|
 |
« Reply #3 on: April 04, 2008, 01:22:03 pm » |
|
Yup, I believe that's how Kingmike did everything, but again that requires a little ASM hack known as bank swapping. You're going to need to know certain things other than opcodes and ASM to be able to do that hack. Stuff like PPU registers and other hardware related stuff.
|
|
|
|
Gideon Zhi
Guest
|
 |
« Reply #4 on: April 04, 2008, 02:33:30 pm » |
|
The real trick you need to know is dumping, translating, then reinserting *everything* all at once, one step at a time. This way each pointer gets modified as each string gets inserted, each string bumps right up against every other string, and you make the most of all of your available space.
Once that's done, if your script is STILL too big, if it's an NES game you basically have a few options: Shorten the text, compress the text data somehow (via DTE, dictionary, etc) or both. The problem with moving text from its bank is that if it already takes up the full bank then moving it is kind pointless, splitting it across two banks is difficult at best, and bankswitching on the NES can be nutty.
|
|
|
|
RedComet
Guest
|
 |
« Reply #5 on: April 04, 2008, 03:20:59 pm » |
|
One word: huffman. 
|
|
|
|
Rai
Guest
|
 |
« Reply #6 on: April 04, 2008, 06:15:17 pm » |
|
Well from the above post, DTE seems to be the best method. I read KingMike's tutorial and got it for the most part, but some parts confused me. I'll ask for help with those after I reread it. Also, what is Huffman? Seems to be no tuts here on it.
|
|
|
|
Ryusui
Guest
|
 |
« Reply #7 on: April 04, 2008, 06:22:10 pm » |
|
Well from the above post, DTE seems to be the best method. I read KingMike's tutorial and got it for the most part, but some parts confused me. I'll ask for help with those after I reread it. Also, what is Huffman? Seems to be no tuts here on it.
http://www.romhacking.net/docs/114/
|
|
|
|
RedComet
Guest
|
 |
« Reply #8 on: April 04, 2008, 09:34:51 pm » |
|
Well from the above post, DTE seems to be the best method. I read KingMike's tutorial and got it for the most part, but some parts confused me. I'll ask for help with those after I reread it. Also, what is Huffman? Seems to be no tuts here on it.
http://www.romhacking.net/docs/142/
|
|
|
|
Karatorian
Guest
|
 |
« Reply #9 on: April 05, 2008, 12:21:48 pm » |
|
Basically, you have two options, compression or ROM expansion. In either case, you'll need to know how to program the platform in question. There are plenty of docs on both methods, so I won't go into the details.
|
|
|
|
|