Users browsing this thread: 1 Guest(s)
Tentative Runic -> SwdMagic patch

#11
Posts: 262
Threads: 18
Thanks Received: 125
Thanks Given: 47
Joined: Mar 2014
Reputation: 8
Status
None
(05-24-2016, 01:20 PM)FF6Fanatic Wrote: I see, by that logic I need to "push" Rage into the next line of tiles? To apply the increment you mentioned I have to increase the value of the.... erm, I don't know.
---
"Siegfd" is kinda odd. I'll make "Siegfried" fit in the menus, no matter what it takes Pummel

Have a look in the C3 disassembly:

Code:
(position of and word "Espers")
C3/5C51: 8D798C9AA0A29C00      (position of and word "Magic")
C3/5C59: 8D7A92B09D939E9CA100  (position of and word "SwdTech")
C3/5C63: 0D7B81A5A2ADB300      (position of and word "Blitz")
C3/5C6B: 8D7B8BA8AB9E00        (position of and word "Lore")
C3/5C72: 0D7C919AA09E00        (position of and word "Rage")
C3/5C79: 8D7C839AA79C9E00      (position of and word "Dance")


Those two first bytes are the positioning data. For Rage it's "0D7C". Try changing the 7C and see what happens.

For the character names, it's trickier. I think someone (Pandora's Box?) expanded it to 7 letters, but I'm not sure.
You likely have to move around some SRAM to make longer names fit, in addition to modifying the various menu and dialogue box functions that display character names. It's not easy, but I think it can be done (with some assembly knowledge).

Edit:
Expanded Ability Names patch discussion is here with mention of 9 letter character names: https://www.ff6hacking.com/forums/showth...127&page=8
  Find
Quote  

#12
Posts: 169
Threads: 19
Thanks Received: 4
Thanks Given: 18
Joined: Jul 2015
Reputation: 2
Status
None
(05-24-2016, 02:13 PM)seibaby Wrote: Those two first bytes are the positioning data. For Rage it's "0D7C". Try changing the 7C and see what happens.

Ah, looks like "0D" is the position of Rage in the x axis and "7C" in the y axis.

I had a look at the C3 disassembly, found these:

C3/219E: 20F951      JSR $51F9   (prints "Lore")

C3/4D0D: 20F902      JSR $02F9   (displays the word "Lore")

C3/5203: A0915C      LDY #$5C91  (address at which you find the word "Lore")

C3/5266: A00A00      LDY #$000A  (lore name length)

C3/526B: A0FDF9      LDY #$F9FD  (lore name address)

C3/5270: A9E6        LDA #$E6    (lore name bank)

C3/5292: 206784      JSR $8467   (draw the current lore name)


I probably need to change C3/5266, right? How do I edit those LDY things, I never see them in WindHex?

I was just thiking of the Angelo patch, IIRC he managed to include a lot of text in the menu. Like character classes and stuff. Thx for the link, I appreciate your helping me.

Edit: I had written "Spirit" directly into hex, so the last "t" overwrote the "0D" first position byte for Rage. That's why it looked funky. I need to make Spirit appear on the menu without interfering with other commands.

So currently, without hex editing and just renaming Lore to Spirit in FF3usME, the skill submenu menu shows "Lore" as if I hadn't changed anything. While the status menu and the battle one show Spirit like I wanted.
  Find
Quote  

#13
Posts: 262
Threads: 18
Thanks Received: 125
Thanks Given: 47
Joined: Mar 2014
Reputation: 8
Status
None
(05-24-2016, 04:05 PM)FF6Fanatic Wrote: C3/5203: A0915C      LDY #$5C91  (address at which you find the word "Lore")

This here is the pointer to the "Lore" string. The opcode for  LDY in hex is "A0", but you don't need to change that. Instead, see that #$5C91? The function that prints text strings finds the location of the string in the ROM by reading it from the Y register. LDY means "Load ____ into the Y register", in this case load the actual number 5C91h into it.

Have a look at address C3/5C91 again; it is the location of the Lore string you tried to change but discovered there isn't enough room. Since you can't change the length of the "Lore" string without eating up part of the "Rage" string, you need to relocate that string to somewhere where there's room for it. Scroll all the way down to the end of the disassembly and you'll see this:

Code:
C3/F091 - C3/FFFF: FREE SPACE!

If you look at that address in your hex editor, you'll see a whole bunch of "FF". Put your "Spirit" string there (including the positioning bytes from the "Lore" string and the terminator "00"), make a note of the address, and then change the pointer to that address.

(05-24-2016, 04:05 PM)FF6Fanatic Wrote: So currently, without hex editing and just renaming Lore to Spirit in FF3usME, the skill submenu menu shows "Lore" as if I hadn't changed anything. While the status menu and the battle one show Spirit like I wanted.

FF3usME only changes the name of the command, which is what appears in the battle menu and status screen. The Skills menu is mostly hardcoded, so you need to change it manually.
There's another instance of the word Lore in the Skills menu (it looks like it's in the same place, but the whole screen is actually redrawn when you open a submenu). The string is located at:

Code:
C3/5C6B: 8D7B8BA8AB9E00        (position of and word "Lore")

Can you find the pointer? Hint: it works exactly like the first one.
  Find
Quote  

#14
Posts: 169
Threads: 19
Thanks Received: 4
Thanks Given: 18
Joined: Jul 2015
Reputation: 2
Status
None
(05-24-2016, 05:02 PM)seibaby Wrote:
Code:
C3/F091 - C3/FFFF: FREE SPACE!

If you look at that address in your hex editor, you'll see a whole bunch of "FF". Put your "Spirit" string there (including the positioning bytes from the "Lore" string and the terminator "00"), make a note of the address, and then change the pointer to that address.

I got the first part down, the adress for the new Spirit string is 03/F091. I included the position bytes and the terminator, it looks like this: 8D7B92A9A2ABA2AD00.

Now about that pointer... you mean this right?

C3/5203: A0915C      LDY #$5C91

Change it to 03/F091? How do you mean...? Sry, I don't understand. Because I tried like

C3/5203: 03/F091

and it glitched. Makes sense since A0 is the load function, but where do I put my new 03/F091 adress?

Edit: I also found that

C3/5C6B: 8D7B8BA8AB9E00
C3/5C91: B7818BA8AB9E00

are both "position of and word 'Lore'" functions. Wait a sec...
  Find
Quote  

#15
Posts: 262
Threads: 18
Thanks Received: 125
Thanks Given: 47
Joined: Mar 2014
Reputation: 8
Status
None
(05-24-2016, 06:09 PM)FF6Fanatic Wrote:
(05-24-2016, 05:02 PM)seibaby Wrote:
Code:
C3/F091 - C3/FFFF: FREE SPACE!

If you look at that address in your hex editor, you'll see a whole bunch of "FF". Put your "Spirit" string there (including the positioning bytes from the "Lore" string and the terminator "00"), make a note of the address, and then change the pointer to that address.

I got the first part down, the adress for the new Spirit string is 03/F091. I included the position bytes and the terminator, it looks like this: 8D7B92A9A2ABA2AD00.

Now about that pointer... you mean this right?

C3/5203: A0915C      LDY #$5C91

Change it to 03/F091? How do you mean...? Sry, I don't understand. Because I tried like

C3/5203: 03/F091

and it glitched. Makes sense since A0 is the load function, but where do I put my new 03/F091 adress?

Yes, the "A0" is the actual instruction and the two bytes following it is the operand. You don't need to include the program bank (03) in the address, just put "A0 91 F0". This is machine code for LDY #$F091, since addressing on the SNES is highest-byte-last ("big endian").

Note that your string has the positioning data of a different "Lore" string, the one at C3/5C6B. There are two, and if you change the 5C91 pointer, you should probably use the positioning data of the string at C3/5C91. They are probably on different layers or something. I think it's what's displayed in the little window when you open a submenu (the one that also holds MP cost).

Code:
C3/5C6B:    8D7B8BA8AB9E00        (position of and word "Lore")
C3/5C91:    B7818BA8AB9E00                (position of and word "Lore")

You need to relocate both these strings to free space, and change both pointers. Search the disassembly for "5C6B" and you'll find the address of the other pointer.
  Find
Quote  
[-] The following 1 user says Thank You to seibaby for this post:
  • FF6Fanatic (05-24-2016)

#16
Posts: 169
Threads: 19
Thanks Received: 4
Thanks Given: 18
Joined: Jul 2015
Reputation: 2
Status
None
Hallelujah!

[Image: 6tjk12.jpg]
[Image: 14mgy6o.jpg]

Hahaha thanks so much man, you rock! It was a little tough to grasp the concepts, but it was a learning experience, for sure. That free space was a lifesaver -- I suppose "FF" means Friends Forever, lol. Again thanks for the step-by-step explanation, that was something. Now I'm a little closer to fulfilling my vision. Kungfu!

Edit: Saw your edit and I'll fix the little window, should be easy

Edit2: There it is!

Full breakdown:

C3/F09A:    B78192A9A2ABA2AD00 (menu option)
C3/F091:    8D7B92A9A2ABA2AD00 (little window)

C3/5203:    A09AF0      LDY #$F09A (pointer to menu option)
C3/4D0A:    A091F0      LDY #$F091 (pointer to little window)
  Find
Quote  

#17
Posts: 262
Threads: 18
Thanks Received: 125
Thanks Given: 47
Joined: Mar 2014
Reputation: 8
Status
None
Well done, and good luck with the rest of your hack!

One little thing to be aware of: now that you're using free space in C3, it's possible that patches made by other people are using that same free space. I'm not sure offhand which, if any, do, but if you apply a patch that does menu stuff and your Skills menu goes wonky, you'll know why.
  Find
Quote  

#18
Posts: 169
Threads: 19
Thanks Received: 4
Thanks Given: 18
Joined: Jul 2015
Reputation: 2
Status
None
About the name Siegfried and fitting it on the menu screen... if I edit the font in FF3usME and make a two-in-one character: like "ie", and another one as "fr". Could I have it like S-ie-g-fr-ie-d? That would fit in the 6-character limit for menu names, right? Will the text pointers for menu screen cooperate with this? Hmm

Edit: nope. Editing font in FF3usMe only affects dialogue/battle quotes etc. The menu is a different bank I suppose.

I do know that Angelo turned "GP" into "Gil" using this principle. He made a character for "Gi" that could be displayed in one byte. Just how did he edit it, though?...
  Find
Quote  

#19
Posts: 110
Threads: 4
Thanks Received: 15
Thanks Given: 1
Joined: Jan 2012
Reputation: 4
Status
None
You forget it'd also need converted to VWF, which isn't happening without something substantial.
  Find
Quote  

#20
Posts: 169
Threads: 19
Thanks Received: 4
Thanks Given: 18
Joined: Jul 2015
Reputation: 2
Status
None
Thx for the heads up, I'm looking into it. Seems like translation hacks deal with this stuff a lot.

While experimenting with font in FF3ME, this is something I did for fun:

[Image: 8vuof4.jpg]

So, to make sure my reason is sound:

For the introduction text, dialogue, battle quotes, etc FF3ME can handle directly the VWF. While for the menu text I need to find the actual code in hex and edit it somewhat in this manner--

00000000
00000000
10011110
00100001
10100111
10100000
10100001
10011110

In this case I'm drawing the "ie" character in a 8x8, 1bit per pixel tile.

Am I on the right path?

BTW this thread is veering off-topic but what the hell. For all purposes it's the Lore -> Spirit thread, and overall implementation of Siegfried as a PC.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite