davoodinator / ff12doc

FF12 Zodiac Age VBF Documentation
9 stars 3 forks source link

some item data #16

Open shinseikuevangerion opened 6 years ago

shinseikuevangerion commented 6 years ago

found some item data. Hopefully it can be used to find license data, since usually in RPGs the way the data is presented for say, items, is configured like other entries so can be used to search for stuff. I'd do a pull request but it seems better as an issue until more can be committed to what everything does.

in: /ps2data/image/ff12/test_battle/in/binaryfile: eitm_data.bin:

address 0x00007b7c: mirage vest

20 03 00 00 00 00 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ^ note that this reads "backwards" for doubles each item entry is 24 xx's long

what I've figured out so far: the order goes: hpA, hpB, mpA, mpB, strength, magic power, vitality, speed, xx, xx, equip: status effect, xx, xx, xx, xx, xx, xx, immunity, half-damage, weakness, potency, xx, xx, xx xx = haven't figured it out yet.

elements: 01 - fire 02 - lightning 04 - ice 10 - water 20 - wind 40 - holy 80 - dark

statuses: 04 - protect 20 - bravery 80 - reflect

so to give it 800 hp, 120 mp, etc etc just count out the number of times you need to move after finding the values you need in the gear around it (it more or less follows the wiki). I should note that this area of the file does NOT seem to have defense, magick resist, evasion, sales price, license requirements, models/gearwindow sprites, internal ID pointers, whether-or-not-it's-metal, the "counter" bonus from genji gear, and probably other stuff I haven't thought of yet - anywhere around it.

phoenik commented 6 years ago

Looks like the first 34 Bytes is the file header 73 74 32 65 | 2d 02 00 00 34 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 44 71 00 00 00 00 00 00 00 00

If you remove that then you get to item data in 52 byte chunks. Still guessing on some stuff, but I did find shields. Zodiac Shield // da 08 12 00 13 20 11 12 00 00 00 00 00 00 02 ff 40 9c 00 00 00 00 4b 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 03 00 00 00 00 00 00 5b 00 77 00 00 00

So far the struct is something like this:

struct 52*8 = 416 Bytes {
    uint16 ID // Reference ID
    uint8 // Item Type? (0x12 = Shield)
    uint16 // Item ID (related to type, possibly for ordering)
    uint8 // ENUM (Power of 4?)
    uint8 // Order ?
    uint8 // Order Type ?
    uint8
    uint8
    uint8
    uint8
    uint8 // ENUM
    uint8 // ENUM
    uint16 // Gil Value
    uint8
    uint8
    uint8
    uint8
    uint8 // Physical Stat (Defense / Eva)
    uint8 // Magical Stat (M.Resist / M.Eva)
    uint8// ?
    uint8 // ENUM Special Properties?
    uint8*13 Various ENUM?
    uint8 //
    uint8 // ENUM?
    uint8*12
}

Around byte 0x00007123 is when @shinseikuevangerion discovery starts. Seems there is some 0 padding then additional data related to the items. How they link I haven't figured out yet.

shinseikuevangerion commented 6 years ago

As an update to this, several posts will be made to cover some of the missing information (to keep it digestable).

new markup for the schedule: hpA hpB mpA mpB str mag vit spd xx bfx ef1 ef2 if1 if2 xx xx abs imm hlf wkn pot xx xx xx hp, mp, str, magpwr, vit, spd, xx, bad-equip:status, equip:status1, equip:status2, immunstat1, immunstat2, xx, xx, absorb, elem.immunity, halfdmg, weakness, potency, xx, xx, xx

I have a feeling that it goes "bad fx group 1, bad fx group 2, eq fx 1, eq fx 2, immunity fx 1, immunity fx 2, things-that-you-normally-don't-want-to-be-immune-to 1, TTYNDWTBIT 2. ribbon has an 01 for it's TTYNDWTBIT 1, which i'm assuming is Lure. Berserk is in that table, so not all of them are necessarily things you want. for this area of the eitm_data.bin file found /ps2data/image/ff12/test_battle/in/binaryfile: eitm_data.bin:

genji armor: 0x00007e4c~63 genji helm: 0x000079cc~e3 dueling mask: 0x000076b4~ demon shield: 0x00007474~ ? *as a further note, all work done for items will probably use this file, simply for size and address strings. See further posts for important modifying details. This file is purely for discovery purposes, in short.

elements: 01 - fire 02 - lightning 04 - ice 08 - earth (confirmed by dragon shield) 10 - water 20 - wind 24 - wind + ice (this confirms grouping; just add digits up) 40 - holy 80 - dark ^ you'll notice that elements pool in a logical way. so, if i wanted to take half from both fire and lightning, my value would be 03 - both fire and lightning.

equipnegative group (presumably group 2): 02 - silence ^ this is probably a direct copy of "status immunities group 2"

equip on-statuses group 1: 01 - ? 02 - regen 04 - protect 08 - shell 10 - haste 20 - bravery 40 - ? 80 - reflect

equip on-statuses group 2: 01 - ? 02 - regen? 04 - float 08 - berserk 10 - bubble 20 - ? 40 - libra 42 - ? if ribbon is accurate, libra and regen 80 - ?

status immunities group one: 01 - ? < ribbon doesn't cover this 02 - ? < ribbon doesn't cover this 04 - petrify 08 - stop 10 - sleep 20 - confuse 40 - doom 80 - blind

status immunities group two: 01 - poison? 02 - silence 04 - sap 05 - poison + sap 08 - oil 10 - ? < ribbon doesn't cover this 20 - disable? 40 - immobilize 60 - immobilize + disable 80 - slow

status immunities group three: probably inverse of good immunities to have e.g. lure, protect, shell 01 - ? < ribbon has this (probably lure)

there's probably a group 4 for the same concept as the other xx in the schedule.

I'll post again to keep it not-ungodly-long.

shinseikuevangerion commented 6 years ago

robes carry defense/mdef at 0x00004104 (black robes), 0x00004138 (glimmering robes), 0x0000416c (lordly robes) as 38 05 ff to get to the next DEF/MDEF entry, press either left or right arrow 52 times. you'll be on the next one in again, more-or-less the order that the wiki has. accessories break this rule in a bad way.

opal ring's def/mdef is at 0x00004548 and reads 02 00 1f

example: 0x000044e0 40 01 ff for def/mdef < maximilian subtract 52 (hex: 34): 44e0 - 34 = 44ac genji armor: 0x000044ac ; you'll note that genji armor lists its defensive values as 3f 00 07 it's important to note most of the "normal" gear ends in FF. only accessories and genji seem to break that rule, so it's probably got something to do with special effects, but again, I should stress that "go 52 places in X direction" isn't the same as knowing the breakpoints for items. i don't know which item+direction the data 'belongs' to yet.

in regards to modifying HP/MP/stats/status immunities portion of the file: if you go to turtleshell choker 0x00007fe4 count out your 24 places (going right) and you'll be at leather gorget. then jade collar, then rose corsage. this means cheatengine's table, which suggests Nihopalaoa and Steel Gorget are supposed to be sammiched in there, doesn't match the file's data structure. The last item in the file is Ribbon. Thief's cuffs seem to be right under Burning Bow and right before Empyrean Rod, unless there's a 1 magick power rod I'm not aware of.

known accessories order (not for def/mdef, purely HP/MP effects etc.) grand armor (last armor; the file going upwards lists all heavy, then all mage (GOING UP FROM HERE!), then all light, then all heavy helms, mage hats, light hats, then shields) opal ring ruby ring tourmaline ring sage's ring ring of renewal agate ring bangle orrachea armlet power armlet argyle armlet amber armlet berserker bracers magick gloves gauntlets turtleshell choker leather gorget jade collar rose corsage indigo pendant bowline sash firefly sash bubble belt nishijin belt black belt germinas boots hermes' sandals gillie boots winged boots quasimodo boots manufactured nethicite cat-eared hood fuzzy miter ribbon

shinseikuevangerion commented 6 years ago

The Important Post

Discovered by steam user watafuzz, any changes made to (seemingly) any portion of final fantasy xii: the zodiac age (pc) must be done in your copy's localized /test_battle/xx/binaryfile/battle_pack.bin and that's where you have to make the change, according to your game's language. For example, if you have a U.S. edition of the game, you would use the VBF browser to go to /ps2data/image/ff12/test_battle/us/binaryfile/ and then you would "find" via hex editor or cheatengine the whole of eitm_data.bin within battle_pack.bin, and in battle_pack.bin is where you'll make your changes if you want them reflected in the game. Any decent hex editor should let you copy a few lines into a notepad (or open both files, etc.) to find these items in the battle_pack.

shinseikuevangerion commented 6 years ago

you'll find zodiac escutcheon's eva/meva at 0x00002c80. 52 away, at at 0x00002c4c, is venetian shield's.

seitengrat: 0x00002462 : e0 00 19 4b 00 00 (e0 = attack 19 = crit/combo rate, 4b = evasion) keep in mind that's the bottom "zodiac age" item, so reserves follow it and don't make much sense. 52 before it, on the other hand: 0x0000242e (trango sword): 99 0a 1e 00 00 00 (I don't know what the 0a does) 52 before that: tula 52 before that (0x000023c6: 64 00 05 0a (bone of byblos) probably follows cheatengine though for order. remember: you can just multiply to move your addresses. if you know the item you want is 18 items away, 52 * 18 = 936 / in hex = 3A8; address +/- 3A8.

shinseikuevangerion commented 6 years ago

Discovered by steam user swarna: (this is a direct quote of their post, and permission was given)

Weapons start at test_battle/in/binaryfile/eitm_data.bin from at most offset 0x6C (Broadsword). Weapon Format (52 bytes): Not sure about start and end-points per weapon but each is definitely 52 bytes in length:

Known Weapon Fields per Byte (Starting from offset 0x6C and repeating every 52 bytes): Weapon Type? (0x0A for melee, 0x64 for ranged, 0x14 for Kumbha, 0xC8 for Seitengrat) Damage Formula ATK ??? (0x00 or 0x0A depending on weapon type, e.g. all Spears are 0A and all Ninja Swords are 00) Combo Rate Evasion Elemental Effect On-Hit Status Effect Inflict Chance On-Hit "Bad" Status Effect Group 1 On-Hit "Bad" Status Effect Group 2 On-Hit "Good" Status Effect Group 1 (e.g. Faith=0x20) On-Hit "Good" Status Effect Group 2 (e.g. Berserk=0x80, Regen=0x02) 4 Bytes -> Weapon Classifications/Icons? Haven't explored in-depth (For example, Spears are equal to eachother here, but 2H and 1H swords get differentiated) Special Property Group(s) (I've looked at stat and elemental potency boosts so far) ^ Probably spans more than 1 byte

Status and elemental effects seem to share the same values/arithmetic system as in armor and accessories. Multiple effects correspond to an addition of their respective values.

Damage Formula Values : http://finalfantasy.wikia.com/wiki/List_of_Final_Fantasy_XII_weapons#Damage_formula 0x14 Strength(Sword, Spear, Rod) 0x15 Speed (Ninja Sword, Dagger) 0x16 Magick (Katana, Staff) 0x17 Vitality (Axe, Hammer, Hand-bomb) 0x18 Pole 0x19 Bow 0x1A Cross-bow 0x1B Pierce (Gun, Measures, healing Rods) 0x68 Mace

Some observed Special Properties in the first byte (unverified but probably correct): 0x18: Potency: Water (Fumarole, Six-fluted Pole) 0x30: Potency: Fire (Burning Bow) 0x60: +2 MAG (most Rods, Oak Staff) 0xC0: +3 MAG and Wind Boost (Cherry Staff) I don't know if these use the same kind of arithmetic as other item properties.

shinseikuevangerion commented 6 years ago

values update:

equip on-statuses group 1: 01 - disease 02 - lure 04 - protect 08 - shell 10 - haste 20 - bravery 40 - faith 80 - reflect

equip on-statuses group 2: 01 - vanish 02 - regen 04 - float 08 - berserk 10 - bubble 20 - critical HP 40 - libra 80 - x-zone

status immunities group one: 01 - death/instant KO 02 - stone 04 - petrify 08 - stop 10 - sleep 20 - confuse 40 - doom 80 - blind

status immunities group two: 01 - poison 02 - silence 04 - sap 08 - oil 10 - reverse 20 - disable 40 - immobilize 80 - slow

shinseikuevangerion commented 6 years ago

if you're looking in watafuzz's eitm_end.ods spreadsheet (or otherwise just want to know the order of the HP/stats/resistances etc area of the file)...

gendarme (line 32) shell shield (line 33) ice shield (line 34) flame shield (line 35) dragon shield (line 36) demon shield (line 37) venetian shield (line 38) zodiac escutcheon (line 39) ensanguined shield (line 40)


leather cap (line 41) headgear (line 42) headguard (line 43) leather headgear (line 44) horned hat (line 45) balaclava (line 46) soldier's cap (line 47) green beret (line 48) red cap (line 49) headband (line 50) pirate hat (line 51) goggle mask (line 52) adamant hat (line 53) officer's hat (line 54) chakra band (line 55) thief's cap (line 56) gigas hat (line 57) chaperon (line 58) crown of laurels (line 59) renewing morion (line 60) dueling mask (line 61)


cotton cap (line 62) magick curch (line 63) pointy hat (line 64) topkapi hat (line 65) calot hat (line 66) wizard's hat (line 67) lambent hat (line 68) feathered cap (line 69) mage's hat (line 70) lamia's tiara (line 71) sorcerer's hat (line 72) black cowl (line 73) astrakhan hat (line 74) gaia hat (line 75) hypnocrown (line 76) gold hairpin (line 77) celebrant's miter (line 78) black mask (line 79) white mask (line 80) golden skullcap (line 81) circlet (line 82)


leather helm or bronze helm (line 83) iron helm or sallet (line 84) barbut (line 85) winged helm (line 86) close helmet or golden helm (line 87) bone helm (line 88) diamond helm (line 89) steel mask (line 90) platinum helm (line 91) giant's helm (line 92) dragon helm (line 93) genji helm (line 94) magepower shishak (line 95) grand helm (line 96)

--

ringmail (line 97) windbreaker (line 98) heavy coat (line 99) survival vest (line 100) brigandine (line 101) jujitsu gi (line 102) viking coat (line 103) metal jerkin (line 104) adamant vest (line 105) barrel coat (line 106) power vest (line 107) ninja gear (line 108) gigas chestplate (line 109) minerva bustier (line 110) rubber suit (line 111) mirage vest (line 112) brave suit (line 113)


cotton shirt (line 114) light woven shirt (line 115) silken shirt (line 116) kilimweave shirt (line 117) wizard's robes (line 118) chanter's djellaba (line 119)

traveler's vestment (line 120) mage's habit (line 121) enchanter's habit (line 122) sorcerer's habit (line 123) black garb (line 124)

carmagnole (line 125) maduin gear (line 126) jade gown (line 127) gaia gear (line 128) cleric's robes (line 129)

white robes (line 130) black robes (line 131) glimmering robes (line 132) lordly robes (line 133)


scale armor (line 134) shielded armor (line 135) demon mail (line 136) diamond armor (line 137) mirror mail (line 138)

platinum armor (line 139) carabineer mail (line 140) dragon mail (line 141) genji armor (line 142) maximillian (line 143) grand armor (line 144)


opal ring (line 145) ruby ring (line 146) tourmaline ring (line 147) sage's ring (line 148)

ring of renewal (line 149) agate ring (line 150) bangles (line 151) orrachea armlet (line 152) power armlet (line 153)

argyle armlet (line 154) amber armlet (line 155) berserker bracers (line 156) magick gloves (line 157) gauntlets (line 158)

turtleshell choker (line 159) leather gorget (line 160) jade collar (line 161)
rose corsage (line 162) indigo pendant (line 163)

bowline sash (line 164) firefly (line 165) sash (line 166) bubble belt (line 167) nishijin belt (line 168)

black belt (line 169) germinas boots (line 170) hermes sandals (line 171) gillie boots (line 172) winged boots (line 173)

quasimodo boots (line 174) manufactured nethicite (line 175) cat-eared hood (line 176) fuzzy miter (line 177) ribbon (line 178) EOF

missing from this area: missing shields: leather shield buckler bronze shield round shield golden shield diamond shield platinum shield crystal shield genji shield kaiser shield aegis shield

missing headgear: burgonet close helm or golden helm leather helm or bronze helm iron helm or sallet

missing armor: leather clothing chromed leathers leather breastplate bronze chestplate shepherd's bolero leather armor bronze armor iron armor linen cuirass chainmail golden armor bone mail

missing accessories: blazer gloves steel gorget battle harness golden amulet cameo belt genji gloves steel poleyns goddess's magicite diamond armlet thief's cuffs pheasant netsuke nihopalaoa embroidered tippet dawn shard

phoenik commented 6 years ago

Some notes I've taken. Haven't had a chance to fully cross check with other findings but seems in line so far.

This follows byte number for the structure of Weapon/Armor. If the first 34 Bytes are removed from the file you get nice rows that line up and translate below Edit Header is 32 Bytes and not 34. Follow the @watafuzz spreadsheets. All of my values below are 2 bytes off. The ID should be 4 bytes instead of 2.

0x00-0x03 uint weapon_id // If you add 2048 to this number it will match up in the XMLs
0x04-0x05 ushort item_type // Item Type or Category
0x06 uchar // ?? Follows grouping of item type
0x07 uchar // ENUM (4 ^ 1, 2, 3, 4 ...)
0x08 uchar order_byte_a
0x09 uchar order_byte_b
0x0a-0x0f uchar[6] // Padding
0x10 uchar metal_value // 0x00, 0x01, 0x02, 0x03, 0x05
0x11 uchar ?? // Values 0x12, 0x17, 0x18, 0x19, 0x12, 0x1a, 0xff
0x12-0x13 ushort gil_value
0x14-0x17 uchar[4] // Padding
0x18 uchar shield_eva, armor_def // Something different for weapons
0x19 uchar weap_dmg_formula, shield_meva, armor_mresist
0x1a uchar weap_atk // Something different for armor
0x1b uchar weap_knockback // Something different for armor
0x1c uchar crit_combo_rate
0x1d uchar weap_eva
0x1e uchar elm_effect
0x1f uchar on_hit_chance
0x20 uchar bad_effect_1
0x21 uchar bad_effect_2
9x22 uchar good_effect_1
0x23 uchar good_effect_2
0x24 uchar ?? // 
0x25 uchar ?? // THese three bytes may be related to icons and models
0x26 uchar ?? //
0x27 uchar ct
0x28-0x2b uint attributes // Offset to attribute (attribute_start_byte + this value)
0x2c uchar ??
0x2d uchar ?? // 0x00 or 0x80
0x2e-0x2f uchar[2] // Padding
0x30 uchar // ??
0x31 uchar // ?? Flag (0x00, 0x01) or part of uchar before to make a ushort value
0x32 uchar render_model // 0x00 or 0x77
0x33 uchar // Padding for 52 byte
watafuzz commented 6 years ago

Re: missing items

Some line lines in eitm_end seem to handle multiple items, like changing the health bonus on line 42 headgear also change the health bonus on the chromed leather

For the file header I went with 32 bytes on my spreadsheet, since it's what it is for a lot of the files in test_battle/ and the whole file make sense with that. 28964 bytes in 557 groups of 52 bytes and then 4224 bytes in 176 groups of 24 bytes. Tho obviously I could be wrong.

watafuzz commented 6 years ago

Speaking of spreadsheets I may as well put hem here:

eitm_data.zip

watafuzz commented 6 years ago

For the byte that is either 77 or 00, I think it has to do with the game looking for a model or not.

I took the blood sword and swapping the model (0xDA) to another worked fine but removing the model without also turning the 77 in 00 crashed the game. Same deal if trying to make the invisible weapons visible: had to make the 0x00 in 0x77 or else crash

SwarnaD commented 6 years ago

So the 24 byte portion is extra data for items depending on their POINTER value in the 52 byte portion.

The field I mentioned as "Special Property Group(s)" (or alternatively 0x22-0x23 in phoenik's ordering, 0x28-0x29 in watafuzz's spreadsheets) points to the corresponding address (2 bytes, possibly also uses the 3rd too).

Notice that the default values "0x00" points to the very first row of the 24-byte portion (which is all 0's). This is for items with no extra special properties.

The value 0x18 (i.e. address 24, the very next row) is used by Six-fluted Pole. The row is all 0's except for a single 0x10 value (Potency: Water effect). The next value 0x30 (48, the next row after that) is used by Burning Bow and the 24-byte row holds a single 0x01 (Potency: Fire effect). The reason some items are affected by the same row is because those items point to the same row.

SwarnaD commented 6 years ago

Full properties of 24-byte portion:

0x00-0x01 HP 0x02-0x03 MP 0x04 STR 0x05 MAG 0x06 VIT 0x07 SPD 0x08-0x09 Bad Status Propogation 0x0A-0x0B Good Status Propogation 0x0C-0x0D Bad Status Immunity 0x0E EOF flag? (0x01 for Ribbon, 0x00 for the rest) 0x0F 0x00 for all 0x10 Absorb 0x11 Immune 0x12 Half 0x13 Weak 0x14 Potency 0x15-0x17 0x00 for all

shinseikuevangerion commented 6 years ago

@swarnaD: I don't have a ribbon in any of my playthroughs, but changing the status portion from 0x0A-F to read: 7c 57 ff ff 01 88 = should give you immunity to everything bad and on-equip every beneficial with the exceptions of reflect, lure, and critical HP. For the purposes of this, reverse and berserk are bad. Ribbon is the only item that, to my knowledge, protects against disease (for it's 01 in position 0x0E), though I can't test this without cheatengine'ing in a ribbon first. Will actually begin testing today, as mostly I've been digging around the files instead. ^^

phoenik commented 6 years ago

@SwarnaD Great finds! I'm going to adjust what I'm working with to a 32 Byte header so we're all in line (since the other files all use 32 byte headers).

phoenik commented 6 years ago

Examining the header more:

0x01-0x03 File Type
0x04-0x07 Number of Items
0x08-0x0b Number of Attributes ? This may actually be the byte length of items... since the value is only 52.
0x0c-0x0f Pointer to Items
0x10-0x13 Padding ? Potentially part of pointer to items
0x14-0x17 Padding
0x18-0x1b Pointer to Attributes
0x1c-0x1f Padding ? Potentially part of pointer to attributes

This should give us the means to parse the binary file easily and allow us to add more items / attributes. How that works into the battle bin I'm not sure. Would probably need a tool for editing that as well.

davoodinator commented 6 years ago

hey guys if you have some time. please organize this into a pull request.. this is excellent research

phoenik commented 6 years ago

@davoodinator I opened a PR with compiled information from this thread. I think we should keep the discussion here still until we've finalized on all of the fields.

phoenik commented 6 years ago

From my open PR, you can see what information we're missing in a bit of a more readable format: https://github.com/phoenik/ff12doc/blob/master/ps2data/image/ff12/test_battle/eitm_data.bin.md

Following bytes need more information:

0x06
0x07 // It's in a power of 4. ENUM for something
0x11 // Values are 0x12, 0x17, 0x18, 0x19, 0x12, 0x1a, 0xff. Another ENUM.
0x24-0x26 // These three may be related to icon and model information?
0x2c
0x2d // 0x00 or 0x80
0x2e-0x31 // Looks like an integer for something
phoenik commented 6 years ago

Updated the item structure with some more information

0x11 Equip Restrictions
0x18 Weapon Range
0x25-0x26 Weapon Stance
0x30-31 Weapon Model. May also encompass 0x2e-0x2f

Still needs looking into:

0x06 // Seems to follow item type
0x07 // Power of 4 values
0x1a // Don't know what this does for armor, solved for weapons
0x24 // Needs testing. Weapons only.
0x2c // Needs testing. Weapons only.
0x2d // 0x00 or 0x80. Value for weapons is 0x80. Potentially a weapon flag.

We're very close!

phoenik commented 6 years ago

It looks like 0x2d is only 0x80 when it's a weapon.

Values 0x24, 0x2c, 0x2d are only used with weapons so my guess is it has to do with animations.

Edit: Values at 0x1b are only defined for weapons as well. 0x1a might have something to do with abilities on armor / accessories with 0xFF being default.

shinseikuevangerion commented 6 years ago

A bit of testing on a play through: Making an item have KO immunity means that at hitting 0 hp, you get the "has fallen" animation and message but the character isn't really dead, so that's a bit buggy. Re-equipping stands the character back up if they've been healed at all.

I'm almost positive the section for attack on accessories and armor also determines what they do. If you look at the values for say, goddess's magicite and dawn shard, they share values in this field. I suspect this relates to action or ability data, but I'll need to test this more tonight (I plan to make manufactured nethicite also reduce MP to 0 so it's 24 byte end bit can be used for weapons instead)

I changed what would be armor evasion on the tournesol to 1E, in an attempt to find range (since ranged use 64 here, spears 1e, kumbha 14) but still couldn't hit a dive talon. On the other hand, changing mithuna to c8 at the same position on it's array gives it range enough to attack as soon as you can target.

phoenik commented 6 years ago

@shinseikuevangerion I believe bit 0x18 is weapon range, but I don't think it has an effect on hitting flying enemies.

phoenik commented 6 years ago

No luck testing 0x06.

Byte 0x07 with value 0x04 allows the weapon to attack flying monsters. I'm assuming this byte has more special properties behind it but I haven't had time to test. I see values 0x00, 0x04, 0x10, 0x12, 0x16 for weapons. There's additional values for armors and accessories.

Not sure what it represents for armor. Could be similar in that it gives a special property not covered by status and attributes.

phoenik commented 6 years ago

Update for 0x07:

0x00 None
0x02 Cannot Sell
0x04 DMG Flying
0x10 Ignore Licenses
0x20 Shield Armor
0x40 Head Armor
0x60 Body Armor
0x80 Accessory

These properties are additive, so a weapon with 0x12 cannot be sold and ignores license requirements. An accessory that cannot be sold and ignores licenses would be 0x92, which is verified by Nethicite, Magicite, and Dawn Shard accessories.

phoenik commented 6 years ago

Byte 0x1a for armor is the special armor effect. Added it into my new pull request. There's only 4 bytes that we need to figure out now:

0x06 // Follows item type grouping... changing this value didn't seem to do anything visually.
0x24
0x2c // Only has values for weapons. Might be sound effect related?
0x2d // Values are 0x00 for armor and accessories and 0x80 for weapons. May have to do with visuals.
watafuzz commented 6 years ago

Changing 0x2c didn't seem to change anything sound related for me (or anything at all really). Changing models tho changes the sound accordingly.

shinseikuevangerion commented 6 years ago

kumbha: 0x04/06: 03 xx 8c 0x24-26: 00 01 03 0x2c: 09 ^ kumbha (line 173) uses the 0x04 (column F) of katana but the 0x06 (column H) of sword it also uses the 0x24 (column AL) of katana but the 0x25-26 (columns AM+AN) of sword and the 0x2c (column AT) of regular katana

I think 0x2c has something to do with model effects (like glows or elemental auras or on-hit bubbles, or whatever). For swords, they're all 02 except for Flametongue and Icebrand, which are 03 and 05. Greatswords are all 06 except excalibur, 07. So far as I've found, the only weapon I found that breaks this rule is Burning Bow (all bows are 15). gladius and zwill crossblade are the only two that share a value (both are wind), while other wind weapons (in the case of this example) use their own unique values, and not daggers. The number is always a +01 to the number of their weapon's "standard" one unless a weapon category features multiple elements, in which case they sequence in item order (flametongue 03, then icebrand 05). Measures are also all 30, despite their various "effect:" fields.

also, about the 0x1a values for armor/accessories: just about all the accessories feature augments restricted normally to enemies/guests, except for the obvious license board ones. this is interpreted by looking at this page: http://finalfantasy.wikia.com/wiki/List_of_Final_Fantasy_XII_enemy_abilities ... and matching up some of the accessory descriptions with them.

cameo belt - 02 = ignore evasion jade collar - 04 = parry gauntlets - 05 = last stand battle harness/genji helm - 06 = counter (which probably means they don't stack; see amber armlet) genji armor - 07 = counter+ leather gorget - 08 = spellbreaker amber armlet - 09 = brawler steel gorget - 0a = adrenaline blazer gloves - 0b = focus cat-eared hood - 0c = LP becomes gil instead genji gloves - 0d = combo +80% pheasant netsuke - 0e = item potency nihopalaoa - 0f = reverse medicine agate ring - 10 = ignore weather and terrain indigo pendant - 12 = ignore magic evade diamond armlet - 19 = better treasure chest drops (sometimes) embroidered tippet - 1b = double xp gain golden amulet - 1c = double LP gain firefly - 1d = no exp gain opal ring - 1f = ignore reflect turtleshell choker - 20 = use gil instead of MP sage's ring - 24 = halve MP costs steel poleyns - 25 = avoid traps goddess's magicite/dawn shard - 27 = 0 mp magick gloves - 67 = serenity orrachea armlet - 72 = ("slightly raises max hp?")

I have a feeling some of the enemy-only augments will be in this list, so tonight I'm going to start using values we don't have yet to get towards a full list to ~FE. Specifically I'd really like to find Safety, since immunity to KO doesn't work properly.

edit: added measures are 30. edit2: forgot to mention: changing ribbon's end-section (24 byte area) at 0x0f and 0x10 to 01 88 did in fact immunize against berserk and disease.

phoenik commented 6 years ago

I've updated the attribute item data structure

0x0e good_immunities_1
0x0f good_immunities_2

I think we have everything for attributes now! Very close to having entire equipment structure down.