Users browsing this thread: 1 Guest(s)
Restrict espers by character.

#11
Posts: 3,969
Threads: 279
Thanks Received: 236
Thanks Given: 57
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
Well it is more clearer like this but I don't often read ASM files. The comments are really helpful. I know how to write assembly directly in a ROM but I would try to write some stuff I did into a ASM file. However I have a few questions:

1) What does an org instruction? Setting the offset where to write?

2) What does the DB and DW instruction means? I noticed they are used in tables or strings...

3) You mention the word editor... Is there a good editor to write ASM files or you simply use something like notepad ++? A program with a compiler that would find syntax or code mistakes for the 65816 would be really good. Is there any?
  Find
Quote  

#12
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
(04-21-2012, 02:31 PM)Madsiur Wrote: 1) What does an org instruction? Setting the offset where to write?

Exactly. It's the address I wish to start writing or altering code.

Quote:2) What does the DB and DW instruction means? I noticed they are used in tables or strings...

They're used to simply insert raw hex. DB inserts a one-byte value (since each letter in a string is one byte in length), DW for two-byte values (for the two-byte addresses in pointer tables), and DL for three-byte values.

Quote:3) You mention the word editor... Is there a good editor to write ASM files or you simply use something like notepad ++? A program with a compiler that would find syntax or code mistakes for the 65816 would be really good. Is there any?

I used Visual Studio, then switched to Notepad++ when I realized it highlighted better than VS. I used xkas to compile, but if you prefer GUIs to command lines SNEStuff will also compile with xkas. Both have pretty thorough error-checking.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#13
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Holy crap! Someone did it!

You sir, are my hero! I wish I had come back sooner to find this as you were working on it.

I can't really think of an 'easy way' to distribute this, though certainly a base IPS that people could modify with simple hex-editing is probably better than nothing.

At least, you can bet -I- would use it!

Having customization Esper equip tables means that now people can customize character's skillsets just by having certain Espers only teach certain spells, and then only allowing those Espers to be equipped by a small number of PCs. This is brilliant. The heart and soul of increasing unique-ness in these PCs.

Some questions though: You said you added the changes at the end of C3 - do you know what patches are usually applied here or what you had to erase to fit this in here? What addresses did you have to Jump from to make all this work? Would it be easy for you to make an IPS with only the Esper equip modification in it (as opposed to all those other cool changes you made! Looking forward to trying your hack, BTW)? Since it's an ASM hack, does it still work with FF3usME, or does FF3usME crash when trying to load your file? What about LE?

Man, this is so cool!
Quote  

#14
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
(05-10-2012, 11:36 AM)DjinnAndTonic Wrote: I can't really think of an 'easy way' to distribute this, though certainly a base IPS that people could modify with simple hex-editing is probably better than nothing.

At least, you can bet -I- would use it!

That's certainly an idea too. I could distribute both the patch and the assembly file with instructions on how to directly modify either one depending on the user's preference.

Quote:Having customization Esper equip tables means that now people can customize character's skillsets just by having certain Espers only teach certain spells, and then only allowing those Espers to be equipped by a small number of PCs. This is brilliant. The heart and soul of increasing unique-ness in these PCs.

That was our idea. All espers have had the spells they teach and their level up bonuses modified rather heavily to complement this hack.

Quote:Some questions though: You said you added the changes at the end of C3 - do you know what patches are usually applied here or what you had to erase to fit this in here?

Bank C3 deals with the menus, so anything that modifies them in some way (probably things like adding character classes or extending the character limit for names/spells/etc.) would likely modify the same bank.

I didn't have to erase anything, though. I had to modify four jumps at various points, and the rest of what I wrote takes up unused space toward the end of the bank.

Quote:What addresses did you have to Jump from to make all this work?

I had to modify the following locations:

C3/1B61: Loads the skills menu and gets the character ID.

I interrupt this routine in order to store the character ID in $1CF8 (Bushido names in FF6j but unused in FF3us). Any unused RAM location would be fine, though.

C3/5524 and C3/58E1: Both of these locations jump to the subroutine that checks if espers were already equipped while building the esper list (at C3/5574).

I modified these jumps to cycle through the esper and character tables I added. Originally, the only thing keeping a character from equipping a certain esper was if someone else already had it equipped. That's why I use this routine and just expand the conditional to include the customized tables.

C3/55B2: When trying to equip an esper someone else already has equipped, this subroutine writes out the error text at the top ("$Chr has it!")

This was modified so the game will print out "Can't equip!" if the player tries to equip an esper on someone that can't use it. The old error message will still be displayed if the esper in question is equipped on someone else.

Quote:Would it be easy for you to make an IPS with only the Esper equip modification in it (as opposed to all those other cool changes you made! Looking forward to trying your hack, BTW)?

Yeah, that's not a problem. I'll see if I can make it tonight or tomorrow and write up instructions on how to modify the tables through hex editing the IPS patch.

Quote:Since it's an ASM hack, does it still work with FF3usME, or does FF3usME crash when trying to load your file? What about LE?

In the limited testing I've done, this doesn't prevent FF3usME or FF6LE from working. There's no reason it should, since this particular hack only modifies the menus, which neither of those programs touch.

Quote:Man, this is so cool!

This kind of enthusiasm really helps motivation. I appreciate it. Wink



GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#15
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Well, it's the kind of enthusiasm only a fellow hacker can give, I suppose!

You mentioned that you added the tables to an unused portion of the C3? bank... I wanted to know specifically from what address to what address. This way I can check it against Imzo's patch list.
http://www.angelfire.com/al2/imzogelmo/Patch_Alloc.txt

Also, if you could post a video of the hack in action?
Quote  

#16
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
The entirety of the hack takes up 1030 bytes starting at C3/F091 and ending at C3/F497. According to that patch list, it would completely overwrite Lenophis' RNG patch, but there's enough free space after it to fit mine, and it's a simple matter to move it.

As for a video, I put up some screenshots in the first post that show pretty much everything a video could. I suppose I could still make a video, but it's really not all that visually impressive.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#17
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Well, I would be particularly interested in a video showing the patch in action in say... Kefka's tower or someplace with multiple parties.

Also, I don't bother with the RNG patch, so if you can make a patch with the changes in those locations you listed, I can use it directly (assuming you don't mind me using your work in my project?).
Quote  

#18
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
Well, here's a quick video I made with it in action. I hope it's what you're looking for.

http://youtu.be/y0OYAMUXAy8

Making this video made me realize one change I want to make, which you can see in action when I try to equip Fenrir on Gau. Since both Shadow and Gau can use Fenrir, but he's unavailable to Gau because Shadow has him already, I want to make Fenrir's name show up in a different color (blue or green, maybe).

Anyway, I'm going to move my custom code to after Lenophis' RNG hack anyway just for added portability.

I've uploaded the assembly file with instructions on how to modify and apply it, since I still need to open up the IPS patch and find out what all needs to be modified for people that prefer to do it that way. I'll work on that today/tonight. I may also throw together a quick Visual Basic program once I figure out how IPS files are arranged.

http://synchysi.firefish.org/ff6h/restrict_espers.rar

And yeah, anyone that wants to use this is free to. That's why I posted about it here.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#19
Posts: 341
Threads: 12
Thanks Received: 0
Thanks Given: 2
Joined: Sep 2010
Reputation: 5
Status
None
Just saw the new post. Watched the video. It was exactly what I was looking for. I needed to see it in action.

Gonna try out the patch now~!

EDIT: Aww... it's only an ASM file...
Now I have to go learn a new program just to apply it...
It honestly would have been faster for me if I could have patched it and then manually hex-edited the table values I wanted. At least, for -me-.

Too tired tonight to play with it. Opinion tomorrow.
Quote  

#20
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
Yeah, I know. I just uploaded that because I had it prepared. Either way, it's pretty easy to apply with SNEStuff.

If you'd still rather edit it through hex, instructions and the IPS patch (along with the assembly file and readme) are here: http://synchysi.firefish.org/ff6h/restrict_espers.rar


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite