(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-03-24 02:05 AM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - FFVI info New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
1152
Newcomer








Since: 03-23-06
From: Portland

Last post: 6603 days
Last view: 6603 days
Posted on 03-23-06 02:36 AM Link | Quote
How come it seems like no one posts about ff6?

I'm trying to figure out a couple things, namely how it calculates the exp. needed for next level (because IIRC it only stores the total exp. for each character), and base stats/item stat bonuses/etc. I've already looked at pretty much everything on the net I can find (which can be summed up here).

Let me elaborate a little on the experience thing.

The tables that contain the exp. needed for each level contain values relative to the previous level, not absolute experience values. i.e.

-- "exp needed" table --
lv. 2: 32
lv. 3: 64
...

These are the values for the first couple levels (I'm pulling this from memory but I believe it's accurate). This table means that to get to level 3, you don't need 64 exp, but rather 96 exp. So to figure out how much exp. is needed to get to a later level, such as 90, you would have to do roughly 90 additions.

The second part of this problem is that as far as I can tell, the game only keeps track of a character's total experience.

Assuming both of these things are true, this means that every time you open a status screen, the game has to add up the experience needed for every level up to your current level, and then compare it to your experience. It would also need to do all of this work for each character when checking for gained levels at the end of battles, etc. This seems like a lot of processing for such a frequently done thing. BUT, I don't have a good grasp of how fast the SNES CPU really is, so perhaps it is calculated on the fly after all? I mean, 90+ additions still isn't that much processing time, even for an SNES. But as a programmer it surprises me that they would do all of this calculating busywork so often.


(edited by mackstann on 03-23-06 01:50 AM)
Mediocre Ibex?

Micro-Goomba








Since: 11-24-05
From: Illinois

Last post: 6331 days
Last view: 6331 days
Posted on 03-23-06 05:17 AM Link | Quote
Originally posted by mackstann
How come it seems like no one posts about ff6?


because most of the stuff most people want to hack has been documented? it is odd though, as i see more posted about it elsewhere.



I'm trying to figure out a couple things, namely how it calculates the exp. needed for next level (because IIRC it only stores the total exp. for each character), and base stats/item stat bonuses/etc. I've already looked at pretty much everything on the net I can find (which can be summed up here).

Let me elaborate a little on the experience thing.

The tables that contain the exp. needed for each level contain values relative to the previous level, not absolute experience values. i.e.

-- "exp needed" table --
lv. 2: 32
lv. 3: 64
...



you are right. on top of that, the value stored in the table is the actual value DIV 8 , which allows 2 bytes per entry rather than 3.

the end-of-battle code works as you described, adding up a cumulative total, comparing it to current Exp, looping, etc. remember this is when the battle's done, so any calculation lag really doesn't matter.

i haven't looked at the status menu code, but i'm sure it works in a similar way (though probably rewritten from scratch in a different coding style, since those sensitive Square programmers weren't always on speaking terms. office romance gone wrong?)


(edited by Mediocre Ibex? on 03-23-06 04:19 AM)
Dragonsbrethren

440








Since: 12-01-05
From: New Jersey

Last post: 6470 days
Last view: 6470 days
Posted on 03-23-06 11:10 AM Link | Quote
A vast majority of FF6 hackers frequent this forum, which is currently down due to a server move.
1152
Newcomer








Since: 03-23-06
From: Portland

Last post: 6603 days
Last view: 6603 days
Posted on 03-23-06 07:51 PM Link | Quote
Originally posted by Mediocre Ibex?

you are right. on top of that, the value stored in the table is the actual value DIV 8 , which allows 2 bytes per entry rather than 3.


Ah yes, I was aware of that actually, just forgot to mention it. I also noticed something interesting that I didn't see mentioned anywhere else: The amount of experience needed to get to a certain level, relative to the previous, and before the multiplication by 8, is roughly that level squared, +/- 1 or 2 points. Level 10 takes 99*8 exp (10*10=100), level 4 takes 14*8 exp (4*4=16), level 30 takes 899*8 (30*30=900), and so on. The one exception is level 99 which has a big (not that big though) jump in the exp. needed.

Originally posted by Mediocre Ibex?
the end-of-battle code works as you described, adding up a cumulative total, comparing it to current Exp, looping, etc. remember this is when the battle's done, so any calculation lag really doesn't matter.

i haven't looked at the status menu code, but i'm sure it works in a similar way (though probably rewritten from scratch in a different coding style, since those sensitive Square programmers weren't always on speaking terms. office romance gone wrong?)

Cool, thanks for the info. I really need to get into analyzing the code, I've mostly been just using found documents and rifling through the rom with a hex editor. Maybe I can finally learn some assembly that sticks.

Originally posted by Dragonsbrethren

A vast majority of FF6 hackers frequent this forum, which is currently down due to a server move.

Glad to hear it will be coming back. Seems like a lot of rom hacking forums come and go.

-edit-

Here's a new mystery.

http://www.rpglegion.com/ff6/hack/ff3info.txt

If you go down to the area that describes the structure of items, you'll see that for "item" type items, the byte at offset 13 is "item properties." The 3 least signifigant bits are blank and presumably have no use or an unknown use. Well, bit 0 and bit 2 are unused in any item, but bit 1 is used in quite a few, and I am starting to think that this indicates damage to undead, or perhaps something like reverse effect on undead. The items that have this bit set are:

tonic
potion
x-potion
elixir
megalixir
fenix down
revivify

The interesting thing is that revivify has it set. Of course revivify kills undead enemies, but it sure doesn't hurt undead party members. So I'm a little unsure how exactly to classify what this bit indicates.

Another one I found that wasn't in the link above was "special action" having a value of 0 -- this indicates a skean attack (fire skean/water edge/bolt edge have it set, but not inviz edge or shadow edge).

I'm using all this to generate a re-implementation of the structures in C, if anyone wondered. It's pretty cool. Not sure it will ever wind up doing anything of substance, but it's fun at the moment.


(edited by mackstann on 03-23-06 06:51 PM)
(edited by mackstann on 03-23-06 06:54 PM)
(edited by mackstann on 03-24-06 09:09 AM)
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - FFVI info |


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.014 seconds; used 367.88 kB (max 438.30 kB)