øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=169.msg3606e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexc1f7.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=169.0e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexc1f7.html.zxÓig^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿȰvj OKtext/htmlISO-8859-1gzip0|Öj ÿÿÿÿÿÿÿÿTue, 10 Mar 2020 10:36:26 GMT0ó°° ®0®P®€§²ð®Òig^ÿÿÿÿÿÿÿÿy%j  Appearance/Sprite ID offset

Author Topic: Appearance/Sprite ID offset  (Read 8556 times)

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Appearance/Sprite ID offset
« on: December 21, 2007, 03:28:26 AM »
Thanks to JCE3000GT for pointing this forum out to me. It'll be a big help, and hopefully I can share some of the information I (will) have.

Currently, I'm searching for what I call the Appearance/Sprite ID offset location. This controls the character class, portrait, magic list within the menu, and maybe a few other things. My goal is creating a character from scratch: I know how to change the initial character name/statistics/equipment/magic, battle sprites, portrait, overworld character sprites, battle commands, magic learning levels, and weapon/armor equipability. However, I need to change the Appearance/Sprite/Class ID to enable choosing magic from the  menu (otherwise you just get a "Cannot Use" message). Does anyone know where this might be located, and it's format if possible?

The other thing I need to decode is the level-up data. I saw that it is located at 7B700, but from my first pass over I couldn't figure out the format. I haven't really played around with it to make sense out of it yet, but if anybody has that information as well, I'd greatly appreciate it.

JCE3000GT

  • Master of FF4
  • *
  • Posts: 1,429
  • Gender: Male
  • Vladof
    • View Profile
    • BlitzKrieg Innovations
Re: Appearance/Sprite ID offset
« Reply #1 on: December 21, 2007, 12:34:40 PM »
From my doc.

Quote from: Character Data
Consists of 32 bytes:
00: Name, Battle Commands, Equip able hands.
01: Appearance, Unknown
02: Level
03-06: Status Ailments
07-08: Current HP
09-10: Maximum HP
11-12: Current MP
13-14: Maximum MP
15: Strength
16: Agility
17: Vitality
18: Wisdom
19: Will
20-22: Unknown
23-25: Experience
26-28: Unknown
29-31: Experience for next level

Level up data:
Quote
7B700 (address with header):
table of offsets of level data by character id, starting with id 01:
id Name
-- ------
01 Cecil B4FB
02 Kain B62F
03 Rydia B790
04 Tellah B892
05 Edward B9DF
06 Rosa BB13
07 Yang BC47
08 Palom BD7B
09 Porom BEAF
0A Tellah B892
0B Cecil C010
0C Tellah B892
0D Yang BC47
0E Cid C112
0F Kain B62F
10 Rosa BB13
11 Rydia B790
12 Edge C1FB
13 FuSoYa C267
14 Kain B62F
These are offsets into page 0F. To derive a ROM address from this, add the table entry (remembering to reverse the order of the bytes as usual) to hex 70000, plus hex 200 for the header. You then get the address of the level-up data for level 1 going up to level 2. However, characters don't have level-up data stored for levels they have already equalled or surpassed when you get them; for example, Cecil as a Dark Knight lacks level-up data for levels 1-9 since he starts out at level 10 at the beginning of the game. In all cases the game multiplies the character's old level - 1 (IIRC) by 5 and adds it to this address to get the address of the 5 byte long data for that level-up:
byte 0:
bit 7 (MSB) Str
bit 6 Agi
bit 5 Vit
bit 4 Wis
bit 3 WP
bits 0-2
000 +0
001 +1
010 +2
011 +3
100 +4
101 +5
110 +6
111 -1
byte 1: base HP increase
byte 2:
bits 0-4 base MP increase
bits 5-7 are the highest bits of the XP requirement. bytes 3-4 are the rest of the XP requirement.


Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #2 on: December 21, 2007, 04:40:00 PM »
Thanks for the level-up data, JCE, that'll be handy.

The Appearance/Sprite/Class ID specified for each character, however, I already knew the location of. I want to be able to change its attributes, not switch them between characters. For instance, remove the Engineer class and create an entirely new one. Do you know the location of these attributes? I assume magic is an attribute of a character's class, so really I just need to be able to change class characteristics.

JCE3000GT

  • Master of FF4
  • *
  • Posts: 1,429
  • Gender: Male
  • Vladof
    • View Profile
    • BlitzKrieg Innovations
Re: Appearance/Sprite ID offset
« Reply #3 on: December 21, 2007, 05:08:13 PM »
For instance, remove the Engineer class and create an entirely new one. Do you know the location of these attributes? I assume magic is an attribute of a character's class, so really I just need to be able to change class characteristics.

I don't know if I've ever documented that data or not. 

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #4 on: December 24, 2007, 01:20:34 AM »
Thanks for the help anyway. I'll keep looking. If anyone else happens to know, though . . .

And, next time I'll post this in the request thread, JCE.  :finger:

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #5 on: December 27, 2007, 07:12:29 PM »
Found it. I actually found it the day after I last posted, but haven't had time to post yet. The information is here (ROM with header):

A81A2-A81CB   Magic List # to Menu Item Link (3 bytes per character: top list, mid list, bottom list)

The top list name defaults to "White", the middle to "Black", and the bottom to "Call". (I don't know where the information is that changes Edge's to "Ninja".) So, for example, Dark Knight Cecil's 3 bytes are FF FF FF, since he doesn't use magic. If you wanted to map magic list 01 to Black magic for Cecil, you would change his list to FF 01 FF.

Ah, success!  :cycle:

JCE3000GT

  • Master of FF4
  • *
  • Posts: 1,429
  • Gender: Male
  • Vladof
    • View Profile
    • BlitzKrieg Innovations
Re: Appearance/Sprite ID offset
« Reply #6 on: December 27, 2007, 08:14:31 PM »
Does it actually work?  If so, then that's an awsome find.

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #7 on: December 29, 2007, 10:09:19 AM »
Yes, it does. By changing that information, the level at which spells are added to lists, and the battle commands, I successfully gave Cecil Black magic that he could access in battle and in the menu. I'm on my way to creating new characters . . .  :finger:

Dragonsbrethren

  • Forum Overlord
  • *
  • Posts: 1,820
    • View Profile
    • Dragonsbrethren Industries
Re: Appearance/Sprite ID offset
« Reply #8 on: January 01, 2008, 03:21:26 PM »
 :omghax:

Awesome. Truly awesome.

Pinkpuff

  • Flan Princess
  • *
  • Posts: 924
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Appearance/Sprite ID offset
« Reply #9 on: March 21, 2008, 07:17:16 AM »
Quote
By changing that information, the level at which spells are added to lists, and the battle commands, I successfully gave Cecil Black magic that he could access in battle and in the menu.

It doesn't work for me.

Here's what happened:

I changed DK-Cecil's magic menu as described above to "FF00FF". At that point, "Black" successfully appeared in his menu and he had the spell "Cure1" in his list (which would be expected since I didn't change the spell lists, and spell list 00 starts with Cure1). Next, I changed his battle menu to "Fight/DarkWave/Black/Item". When I tested it, his battle menu appeared correctly, but when I went into the "Black" sub-menu, no spells appeared.

Did I miss something?
Let's dance!

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #10 on: March 21, 2008, 07:55:38 AM »
Sorry, I should have updated my post. There's actually two magic list links, one to the battle menu and one to the main menu.

9FFDD-A000C   Magic List # to Battle Command/Learning Link
A81A2-A81CB   Magic List # to Menu Item Link

They both follow the same format (top list, mid list, bottom list).

Pinkpuff

  • Flan Princess
  • *
  • Posts: 924
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Appearance/Sprite ID offset
« Reply #11 on: March 21, 2008, 01:40:16 PM »
It works now! Thank you so much!
Let's dance!

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Appearance/Sprite ID offset
« Reply #12 on: March 21, 2008, 06:40:57 PM »
You're welcome. Glad to be of help.  :happy:

Pinkpuff

  • Flan Princess
  • *
  • Posts: 924
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Appearance/Sprite ID offset
« Reply #13 on: March 28, 2008, 06:48:21 AM »
Concerning the level-up data...

It seems as though for each character, after around level 70 or so, their level-up data bleeds into the data for the next character, causing the level-ups to go wonkee after that point. Now, I know from having played the game that around level 70 or so your level-ups start to become strange and you start losing stats and things, but they didn't seem this strange...

I guess my question is, is there somewhere else where the rom stores information for what happens after level 70? Or is the game actually using this screwed up data for those levels?
Let's dance!

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Appearance/Sprite ID offset
« Reply #14 on: March 28, 2008, 07:58:11 AM »
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3