|
Post by DarkTwilkitri on Apr 10, 2004 6:30:42 GMT -5
The problem with that is that in general, the blocks with the 2As are before the blocks which they point to. So I don't really see how it could resolve an address which it doesn't have yet... Although... would it matter which way the blocks are ordered in the script... considering that they're going to be moved around anyway... I could just dump the pathing blocks after the blocks they path to. That would solve that problem... provided that that would work. Regarding status... I got FF:CC on Thursday, so I haven't really done much apart from play that . I finally started doing some stuff today. Haven't done a whole lot yet, though. I started recoding my dumper, but all I've done so far is to get it to dump Constant Bank sections of text properly, and broke its normal operation in the process (and thus will not be uploading the latest version). I started looking over the parser... I still don't understand how exactly it works, but I haven't had much of a look over it yet, so I'll keep at it for awhile before asking for any help. With the Constant Bank pointers being similar to the item names et al... the problem with that is that the item names use the 'weird' relative pointers, whereas Constant Bank use absolute pointers. Doesn't the way in which the item names were gotten to work rely on them being relative? Of course, as I said I haven't really gone through much of the parser, so I could be wrong.
|
|
Jay
FESSer
Posts: 3
|
Post by Jay on Apr 10, 2004 20:17:27 GMT -5
The problem with that is that in general, the blocks with the 2As are before the blocks which they point to. So I don't really see how it could resolve an address which it doesn't have yet... Maybe I wasn't so clear in my last post. What I meant was that if you could resolve the symbol, then you'd do so immediately. If you couldn't resolve the symbol, ie. a symbol that would be defined somewhere in the future, you record the address of where that undefined symbol is. When you encounter the actual symbol in the future, then you go back to the recorded address of the undefined symbol and patch that memory location with the symbol's value. That's a simple way to fix the above problem. As far as I'm concerned, the ordering of the block doesn't matter. Yeah, the relative to some location pointers as solved using a bad "hack". To use the hack, you have to isolate the data into a separate section specified in the RAT table (rat/fe4.rat). Then you have to add an entry to the scripts/fe4map.c which will correctly subtract the address.
|
|
|
Post by DarkTwilkitri on Apr 10, 2004 22:23:18 GMT -5
Maybe I wasn't so clear in my last post. What I meant was that if you could resolve the symbol, then you'd do so immediately. If you couldn't resolve the symbol, ie. a symbol that would be defined somewhere in the future, you record the address of where that undefined symbol is. When you encounter the actual symbol in the future, then you go back to the recorded address of the undefined symbol and patch that memory location with the symbol's value. Ah, now I see what you mean. I think I should be able to do that... The section stuff had thrown me for awhile, until I thought to look at the RAT file... I was thinking that making a case which is relative to 0 (which is what absolute is, after all) would fix part of the CB problem, and you've confirmed it for me without my even having to ask Thanks. ~Status~ I added the capability to dump ASM-pointered text to my dumper, and repaired normal operation. Now there's only 2A text to go, and I'm still figuring out how exactly I'm going to do that (or, I was, but now I'm pretty sure on how I'm going to do it). Haven't uploaded the latest version yet... not that anyone apart from me cares about it, anyway. Just a note in the obscure case that anyone does use my dumper over Jay's... I am not adding support for selecting variations to Manual Mode. So, you'll have to start using Auto Mode, if you haven't been. I should never have put Manual Mode in anyway, but I was bored I only just rebooted into Linux to start editing the inserter. Firstly I'm going to work on the ASM type, since that appears to be the simplest.
|
|
|
Post by DarkTwilkitri on Apr 11, 2004 7:04:32 GMT -5
Eee. It's taken me all day, but I finally got ASM-type pointers to get inserted properly. May seem that they're not much use, from the screenshot, but the Ending Narration runs on them too. Argh... I had to insert heaps of formatting by hand, since the parser removes it, and it crashes/runs stupidly without it... the parser also automatically assumes the 09 font, and when that starts it's not, so I had to put that in by hand too... I have a suspicious feeling that the Merge directive doesn't actually do anything whatsoever. A, from it not merging properly when it should be obvious from the tag, B, from it continuing to merge incorrectly even after remocving the merge tags, and C, from the fact that there's no code for it in the parser. I started making a mergex directive, but I gave up. A large chunk of my time was taken up with getting the thing to merge correctly... I slightly broke the merging part of sif, which was the cause of most of my problems. After I realized what I might have done, I checked against a backup copy and realised my error, and fixed it, and lo, it worked I had to add in a nocompress directive to stop an individual script from being compressed. The intermission doesn't like Jay's compression, and I couldn't find any apart from the make option, which would leave the entire script uncompressed. Not exactly the wanted effect This directive was pretty easy to make, though, as all I had to do was tell the tbl file to kill itself then null it out. Theoretically, any ASM-pointer variation text should be able to be dumped and inserted now. I would have tested the entire intermission and not just the names, but the main of it runs on a cross between Constant Bank and ASM, so I'm going to have to account for that. I was originally putting the text in its old location (so there was only room for things like: Noish. Alec. Princess Ira. etc), but I realised that there was really no need to, so I moved its section into the PUBLIC section (Yay, 520 more bytes. Going to be so helpful) and let it draw from that. It's not as if PUBLIC's going to run out soon... I hope Hmm, so I have quite a bit to choose from. I can either do some dumps (the SP game over & demos, or the ASM ending narration... gotta get the ASM variation working too, I guess), or I can get inserting constant bank working, or I can get dumping 2A working. Don't think I'll do any more today, though.
|
|
JacenPrime
FESSer
Nergal, the thousand year old mastermind of evil (Sprite by Iggy)
Posts: 237
|
Post by JacenPrime on Apr 11, 2004 9:09:09 GMT -5
where'd you get a patch translating that? The patch I have didn't translate that at all...
|
|
|
Post by leo_dragon_knight on Apr 11, 2004 18:54:55 GMT -5
i downloaded this patch and that part was all giberish
|
|
Iris
FESSer
President of SueKilling Society
That's PRINCESS Iris to you, bitch. <3
Posts: 1,380
|
Post by Iris on Apr 11, 2004 19:00:50 GMT -5
Well, uh, guys. Note how he's talking about hacking and coding type stuff in these posts.
Now put two and two together.
|
|
JacenPrime
FESSer
Nergal, the thousand year old mastermind of evil (Sprite by Iggy)
Posts: 237
|
Post by JacenPrime on Apr 11, 2004 20:24:54 GMT -5
oh, my bad....skipped that part.
|
|
|
Post by DarkTwilkitri on Apr 12, 2004 2:32:35 GMT -5
...
Anyway... I've dumped JTECly the battle scripts, the demo battle scripts, the demo talk scripts, the intermission (names only), the lover scripts in the ending, and the ending narration. I need to update the RAT and then get everything I've modified so far together, and then I'll upload all that. Should get that done some time tonight.
That's most of the scripts which can currently be inserted. Time to get to work on constant bank or 2A.
...there's still text inside the ROM (such as the weapon information, et al) which I haven't located yet. Not that it's especially difficult to do so... but there may be further variations. I hope not.
When I put the modified files up, I'll put my reparation/test patch up, too. Will that make people happy? Good. For some reason, the Skills section is working and the Data section has stopped (working). I'm going to take a look at that.
|
|
|
Post by DarkTwilkitri on Apr 13, 2004 8:38:09 GMT -5
Last night, tonight, same difference. darktwilkitri.thegreatbeyond.net/fehack/j2e/modified.zipThe modified files, along with the JTEC scripts I've dumped. They're in the same directory as the original j2e file archive is, thus fulfilling the GPL obligation of providing the original code. I think. The link to them, just in case, is darktwilkitri.thegreatbeyond.net/fehack/j2e/fe4-0%5b1%5d.50.9.1-jay.tar.bz2Linux has perturbed the scripts by changing every character it doesn't know into a '?'... there's not much I can do about that. Most of them are still existant. You can get the non-JTEC versions from fehack, in any case, and the only real difference between them is formatting. Right, now... The battle scripts are supposed to have a [winlimit 160] directive at the start, but it seems to have been misplaced. You may want to add it, unless you want text to run off the screen. After replacing the files, you'll probably need to ./configure again to get SIF to rebuild... there might be another way, but that works for me, and so I use it. I'm not sure if the parser will recompile itself automagically when you go to make ips, so you might want to make project too. Be wary of the further.rat file. It's got the spaces for all of the new scripts in that zip... if you don't replace all of those scripts with english, problems can arise from the parser putting text into locations of text you haven't changed yet, and that can be... bad. The Reparation Patch is here. darktwilkitri.thegreatbeyond.net/FE4/fe4.ipsI shrunk it with SNESTool and haven't tested it, however, so... be wary. The created version seems to work fine, and SNESTool's pretty reliable, so it should work. Features of the Reparation Patch include: - Shortened Names
No longer must people languish with magics called Bow. Or enemies called Verdanearmy. Almost 100% of those problems have been eliminated (even if it did require heavy pruning in the case of castle names... put it this way, most of them are down to the first syllable... this is due to lack of space, though, not lengthy names), except for a few special cases (there's really no way you can shorten Lachesis, is there? Well, there's always Lakesis... no.).
- Skills are back on the menu... I have no idea how... they just are. I got rid of the type because it was taking up room I needed for the skill names, unless you wanted me to drastically shorten them. No-one cares about the type, anyway (I guess...).
- I left the intermission names in, so all those people who were frantic for them can now see them.
- I tricked the parser into thinking that certain control codes were fairly long. Now, while I haven't solved the dynamic naming problem yet, at least it doesn't cause (as many) runs off the end of the screen any more.
- You don't need to Equip to guard castles any more! Clearly the best change of the lot.
I took my testing stuff out of the patch, so there shouldn't be any new problems. Now, onto some more recoding...
|
|
|
Post by DarkTwilkitri on Apr 15, 2004 6:28:09 GMT -5
~Reparation update.~ darktwilkitri.thegreatbeyond.net/FE4/fe4.ipsOMG it is teh caraktr scren!!!11! Castles aren't NBARLPed any more... now they are defeated. People actually receive items now, too, instead of <random gibberish>ing them (but not in battle). Some other miscellaneous things too. I haven't updated modified.zip yet. I really don't feel like rebooting into Linux to collect the files then rebooting back. I'll put them up tomorrow or something. Now, working on Reparation is all well and good, but it's stopping me from working on recoding to get the other variants insertable. Thusly, I'm not going to fix any more non-dialogue stuff unless it is requested (or unless I'm testing inserting the other variants). No-one's likely to request anything before I get off the 'net tonight, so that's one day at least. Talking about recoding, there are three new directives. noptr - for when you are changing something with no pointer. More on that in a moment. mode-notext - for changing numbers. More on that in the same moment as there is more on noptr. spx (spaceX) - for inserting a space (SJIS mode only). For some confounding reason, the sp directive in SJIS would cut off the parser upon it being used. That's not very helpful, really. So, spx was born. The status screen's labels were all positioned by the X register. As I was changing their length, I wanted to reposition them, but oddly enough there are no pointers to the inside of the LDX commands. Thusly, the directive noptr was created and implemented, which blatantly skips the pointer step in sif and uses its ATATaddress as the address directly to the thing to be changed. Further, because I was changing numbers, and I don't really trust word possessors to leave non-ascii bytes alone, I added in the mode-notext directive to run a parsenotext function to turn stringed numbers into bytes ("0x15" instead of the byte 0x15, etc). If you don't understand, wait until I upload the latest modified.zip and take a look at statusreform.txt. Hmm. I don't think I'll do any more work tonight.
|
|
Iris
FESSer
President of SueKilling Society
That's PRINCESS Iris to you, bitch. <3
Posts: 1,380
|
Post by Iris on Apr 15, 2004 10:25:48 GMT -5
I feel the need to make a random gesture of love and appreciation for your work on this.
*glomp*
You hacker types never cease to amaze me.
|
|
|
Post by leo_dragon_knight on Apr 15, 2004 11:15:29 GMT -5
You hacker types never cease to amaze me. ah yes the deadly skill of the hacker...
|
|
|
Post by DarkTwilkitri on Apr 16, 2004 6:05:50 GMT -5
Yar. That image indicates that Constant Bank pointers are now working. I didn't have to change much to get them working (basically just had to add another map to fe4map.c, and I'm not even sure if I had to do that), but they're still very tricky to get to work properly. The thing wasn't working for hours, and I changed the section name, and it started working... I really don't understand that. But it's working and all, and that's good. So what does that allow? Death scripts, chronology, the main menu, the dynamic names IIRC... basically, everything should be able to be dumped and inserted now except for the conversational ending (and anything that relies on that asm/cb variant, but that's not really going to take very long to fix). Modified.zip has been updated with the new source files and script dumps. I haven't updated further.rat yet, though, so the death scripts can't be inserted yet (I only allocated enough room for the Sigurd example above). I'll get to that, but allocating the spaces in the rat is so mind-numbingly boring... Nothing new in Reparation, as I said.
|
|
|
Post by Eaichu on Apr 16, 2004 12:45:47 GMT -5
You're doing excellent work, DarkTwilkitri. Very impressive. Keep up the work!
|
|