Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - NFITC1

Pages: [1] 2 3 ... 115
General discussion / Re: Elemental Materia
« on: 2019-01-04 13:20:51 »
No. Either just applies the "attempt to cause status to enemy" flag which has a singular use per action. Multiple hits would cause multiple attempts, but in the case of sleep you'd just as likely cause it then the next hit will snap the target out of it.

Materia do not have multiple elements. There's only one assigned to each materia. Kujata is a summon that has multiple elements attached to the action, but the materia technically has no affinity.


That's how poison works. It takes a delta of one of the actors' timers (I forget which one) and when it reaches a certain value it queues an action which inflicts poison damage to the poisoned. There are a lot of battle "events" that are mostly used by animations, but it can be used for almost anything.

That struct IS the "definitive" values for all things battle. It holds the considered HP values which get written to the save block at the end of each battle as well as which status each actor has, etc. To save on memory, redundancy is reduced as much as possible so these are the only "stable" values for each actor. When damage is calculated it will occasionally temporarily copy values to smaller parts, but the 4000+ battle addresses are what gets kept.

I see the confusion. I wasn't looking at my notes so I wasn't clear on what's going on. :P

The structure you are referring to is an array of 68h in size. The one I'm referring to is a pointer to an array that is 264h bytes in size. It does have a weird gap in its structure between index FF and 200. I'm not sure why, but it doesn't seem like those 256 byte are used.

What YOU are referring to translates to the battle variables 4000 - 42E0 for each actor (there are as many as 10, but only 9 are functionally used). Here's my notes on the structure. Some of the bytes (particularly toward the end) are unused. Some are so rarely used (possibly just once in the entirety of the game) I can't tell what they're for.

Code: [Select]
00000000 BattleVar_Actor struc ; (sizeof=0x68)   
00000000 Statuses        dd ?
00000004 ActorFlags      dd ?                    ; base 2
00000008 Index           db ?
00000009 Level           db ?                    ; base 10
0000000A Unused_0        db ?
0000000B ElementDamage   db ?                    ; base 2
0000000C CharacterID     db ?
0000000D AtkPower        db ?                    ; base 10
0000000E MagPower        db ?                    ; base 10
0000000F PhysEvade       db ?
00000010 IdleAnimID      db ?
00000011 DamagedAnimID   db ?
00000012 BackDamage      db ?                    ; base 2
00000013 SizeScale       db ?
00000014 Dexterity       db ?
00000015 Luck            db ?
00000016 IdleAnimHolder  db ?                    ; base 2
00000017 LastCovered     db ?
00000018 LastTargets     dw ?                    ; base 2
0000001A PreviousAttacker dw ?
0000001C PreviousPhysAttacker dw ?
0000001E PreviousMagAttacker dw ?
00000020 PDef            dw ?
00000022 MDef            dw ?                    ; base 10
00000024 MyIndex         dw ?
00000026 AbsorbedElements dw ?
00000028 CurrentMP       dw ?
0000002A CurrentMMP      dw ?
0000002C CurrentHP       dd ?
00000030 CurrentMHP      dd ?
00000034 anonymous_1     dd ?
00000038 anonymous_2     dd ?
0000003C anonymous_3     dd ?
00000040 anonymous_4     dd ?
00000044 InitialStatuses dd ?
00000048 anonymous_5     dd ?
0000004C anonymous_6     db ?
0000004D MagEvade        db ?
0000004E Row             db ?
0000004F Camera?         db ?
00000050 GilStolen       dw ?
00000052 ItemStolen      dw ?
00000054 Unknown         dw ?
00000056 APValue         dw ?
00000058 GilValue        dd ?
0000005C EXPValue        dd ?
00000060 anonymous_8     db ?
00000061 anonymous_9     db ?
00000062 anonymous_10    db ?
00000063 anonymous_11    db ?
00000064 anonymous_12    db ?
00000065 anonymous_13    db ?
00000066 anonymous_14    db ?
00000067 anonymous_15    db ?
00000068 BattleVar_Actor ends

the struct you speak of that's only 68h in actually 260h in size. There's a monstrous 512 alignment after that 68h that picks back up at 200h. That's where target stats exist and it can change per target. The first 68h stays consistent for the duration of the calculation.

I love the idea of an ida to json exporter. I'd happily apply it to my database. I've marked thousands of lines and don't even remember all the changes I've made. I've annotated nearly every routine used in accuracy/damage calculation and still have to hunt through them to find details.

I can answer both questions for you in excruciating detail, but I can only answer the first one right now since I don't have access to my notes right now.

That method you're seeing before and after the damage routine call is the additional effects handler. It has to run before the damage calculation and after to be able to influence pre damage and post damage calculation manipulation when applicable. The 0 and 1 are handled in the individual effects and will only apply if the action has an effect assigned. I had some detailed notes on the wiki if those still exist on one of the new ones.

Off the bat I can say have a look at how Diamond Weapon handles it. It selectively turns on and off its magic/physical immunities for limits.

You should probably start a new topic with a new subject rather than assume anyone's still looking at this one (other than me).

...How would i do it with "Proud Clod" in case i have to do it with that one?
...Proud Clod should offer to do it automatically when you create a scene.bin

Your KERNEL.BIN needs to be updated. Both Hojo and Proud Clod are capable of doing this. Proud Clod should offer to do it automatically when you create a scene.bin, but it works best if you're using the vanilla KERNEL.BIN (not a mod that may have it in a different place).

Team Avalanche / Re: Mako reactor bridge scenes
« on: 2018-10-17 14:33:20 »
More eerie and terrifying than the original! It's amazing!

Have you considered opening it as a google doc, or using Libre Office or something similar? Both are free and support Excel :)  In either case, is it a document you'd be willing to share? Mostly for my own fascination, and partly for potential use. Or would you prefer if I were to ask about individual things on a case-by-case, where I can't find them elsewhere?

I am using Libre Office to make a few adjustments here and there. I don't care if there's a google doc, but I don't want to bother setting it up. I'd be willing to give you what I have, but it might not make a lot of sense.

Do you happen to have a doc with the addresses noted in, or is it more looking up previous work to find stuff?

A bit of both, actually. Funnily enough I started out a spreadsheet on Excel, then my trial ran out and I'm too cheap to buy a copy of office so I just keep opening it in read-only mode. :P Whatever I can't find on the spreadsheet I dive into my debugger which has lots of comments on various addresses.

What is bit 4 about NFITC1?  I noticed 08 was always set.

It could be one of three things: active actor (animations/effects/scripts run), active target (can be targetted), something else I can't remember related to vulnerability. :P It's AI address 4023 and that's usually unset in boss death scripts IIRC. 4020 and 4022 are unset on death as well so those would be the other two.

Bit 4 would be 10h. 8 is bit 3. 8 I have listed as "Enabled" which means they can be targeted. For allies this is active as long as they are not imprisoned since you can target "dead" allies.

Yeah, that's what I meant. Active bit 6 = 40h.

I do for the original PC release

Top slot:  0x9AB0E0
Middle slot:  0x9AB148
Bottom slot:   0x9AB1B0

An active bit 6 indicates the actor is in the back row.
An active bit 5 indicates that actor is defending.

I would never turn down such an offer! I might not use them all, but having access certainly improves what can be done! <3

Just tell me what you want and I probably have it. I've envisioned random numbers, but they change every frame and by the time your program read/displayed one it would be stale.
Anything else though let me know. AI variables? Timebar values? Status time remaining? etc.

It is a fantastic idea. I have lots of memory addresses labeled if you want more metadata.

General discussion / Re: FF Wiki - Too much nonsense
« on: 2018-10-08 16:43:52 »
Most likely it was a function that was disabled during testing because either the sway was larger or the implementation was bad. That function was fixed but the save feature was never reenabled.

General discussion / Re: FF Wiki - Too much nonsense
« on: 2018-10-08 15:25:18 »
The bridges sway while you're on them. It might be possible through save-reloads to glitch off of them. Then either the game doesn't adjust your z-coord (which could lead to lots of sequence breaking/soft-locking) or it would put you down on the lowest terrain which might soft-lock you in some cases (which means it's bad practice).

General discussion / Re: FF Wiki - Too much nonsense
« on: 2018-10-08 03:47:10 »
I've edited wikis on several occasions and very rarely has anyone overwritten the changes I remember making. "Credit" is no one undoing your change. The whole point is that contributions can be anonymous. You could leave a reference to a post here if you want to leave "proof", but it's hard to prove intent of developers.

If it's anything like FF7's enemy action set, some of the unnamed actions might be physical attacks or even animation changes. Do those unnamed actions actually have non-dummied data associated with them?

Graphical Modding / Re: Carbuncle looks weird...
« on: 2018-09-24 21:06:13 »
Magma Carbunkle. :)

I remember seeing a video, but it may have been a concept video rather than an actual mod.

it might be that the zlib1.dll isn't in the directory with the PrC executable.

Pages: [1] 2 3 ... 115