Last update: 7/5/2021

Back to home

Required Software

For manual editing:

For BNE editing (preferred method):

Creating a Patch:

Skill Table Layout

The game’s executable has three different tables for skill properties, each serving its own purpose. The layout within the executable and their hex offsets are as follows:

  1. Skill Table 1
    • SCUS = 0xBAE4
    • SLPS = 0xE8D4
    • SF.EXE = 0xE8D4
  2. Skill Table 2
    • SCUS = 0x96DC
    • SLPS = 0xC4D4
    • SF.EXE = 0xC4D4
  3. Linked Skills
    • SCUS = 0xEF38
    • SLPS = 0x11D0E
    • SF.EXE = 0x11A00

There is also one additional table that specifically controls combo receive data, though its exact layout and formatting is still being worked on. I will update this page with a section on that table once I understand how it works and how to precisely change it.

Skill Table 1

About Skill Table 1

Skill Table 1 is the primary table for all techs. It controls a tech’s accuracy, its element, what EP it uses, etc.

Skill Table 1 Formatting and Values

TODO: List all byte notes from skills editor

Skill Table 1 uses 0x11, or 18, bytes per tech, each byte serving its own purpose:

  • 0x00 = Accuracy Bonus
    • Accuracy bonus to tech
    • Value range: 0-255
    • 0 = can’t miss
  • 0x01 = Power Constant
    • Base power
    • Value range: 0-255
  • 0x02 = Power Growth
    • How much weight your stats have on the EP’s output
    • Value range: 0-255
  • 0x03 = Status Effects
  • 0x04 = Priority and Bits
    • Action order and some other bits
    • 0x00 = Fast Trick
    • 0x01 = Normal Priority
    • 0x02 = Lowest Priority
    • 0x04 = UNKNOWN
    • 0x08 = UNKNOWN
    • 0x10 = UNKNOWN
    • 0x20 = UNKNOWN
    • Bit Toggles:
      • 0x40 = triggers DragonTurn
      • 0x80 = Triggers KO Throw
  • 0x05 = Special Attributes
    • Enables, disables, or modifies damage output
    • 0x01 = Anti-Air
    • 0x02 = UNKNOWN
    • 0x04 = UNKNOWN
    • 0x08 = Liquid
    • 0x10 = Throw
    • 0x20 = Sonic
    • 0x40 = Gaze
    • 0x80 = Ground
  • 0x06 = Attack Elements
    • Which element(s) the tech uses
    • 0x00 = ignore defense
    • 0x01 = Status
    • 0x02 = Force
    • 0x04 = Electric
    • 0x08 = Cold
    • 0x10 = Heat
    • 0x20 = Blunt
    • 0x40 = Pierce
    • 0x80 = Slash
  • 0x07 = Targeting
    • Who a tech can target and whether it’s solo or AoE
    • 0x01 = caster only
    • 0x02 = single enemy of caster
    • 0x03 = any one enemy or ally?
    • 0x04 = caster + outward
    • 0x05 = excludes caster
    • 0x06 = single enemy of caster
    • 0x07 = single enemy of caster
    • 0x08 = caster + outward
    • 0x09 = all allies of caster, including caster
    • 0x0A = all enemies of caster
    • 0x0B = everyone
    • 0x0C = tech unavailable
    • 0x0D = tech unavailable
    • 0x0E = tech unavailable
    • 0x0F = tech unavailable
    • Bit Toggles:
      • 0x00 = hits valid targets in front of selected target
      • 0x10 = hits valid targets behind selected target
      • 0x20 = hits valid targets to either side of selected target
      • 0x40 = same as 0x10
      • 0x70 = can target anything, regardless of placement
      • 0x80 = disables shield blocking
  • 0x08 = Area of Effect
  • 0x09 = Blocking
    • Shield modifiers, and whether Dodge or Counter techs are effective against it
    • Value Range = 0-3
    • 0x00 = Unblockable
    • 0x01 = 1/4 Shield Block Rate
    • 0x02 = 1/2 Shield Block Rate
    • 0x03 = Normal Shield Block Rate
    • Bit Toggles:
      • 0x04 = Lunge flag
        • Moves forward if user/target was previously moved to the back row, which slightly increases damage
      • 0x08 = vulnerable to Dodge/Evasion techs
      • 0x10 = ReactionShot trigger
      • 0x20 = contact counter trigger
        • Vulnerable to Godless, Kasumi, InterceptSystem, BervaCounter, and all Barrier techs
      • 0x40 = Deflect trigger
        • Vulnerable to Deflect, LightSword’s deflect, CrossDeflect, SwayBack + Berva’s SwayBack
      • 0x80 = GlassShield trigger
        • Vulnerable to GlassShield, ShadowServant, MirrorShade, Magician
  • 0x0A = Menu Visibility
    • How the tech is displayed in the attack menu and when about to be used
    • Also has effects on tech limits
    • 0x00 = Self-targeting Counters
    • 0x01 = UNKNOWN
    • 0x02 = Unlisted; can’t be chosen in battle
    • 0x04 = Requires 2 swords
    • 0x08 = Applies Twogun
    • 0x10 = Skill name doesn’t display when used
    • 0x20 = Restores item after battle if broken
    • 0x40 = Break item permanently unless bit 0x20 is set
    • 0x80 = UNKNOWN
  • 0x0B = UNKNOWN
  • 0x0C = Effect Process
    • Which formula to use for damage calculation
    • Also determines whether the tech heals and/or it applies/removes (de)buffs
    • Click here to see all values
  • 0x0D = Linked/AoE Skills
  • 0x0E = Break Weapon
    • Determines whether the weapon used to use the tech breaks upon tech usage
    • Exact purpose is unknown
  • 0x0F = Combo Send
    • What combo send data the tech has
    • 0x01 = Snow
    • 0x02 = Blackout
    • 0x04 = Cold
    • 0x08 = Hot
    • 0x10 = Move
    • 0x20 = Instant Stop
    • 0x40 = Down
    • 0x80 = Dead Stop
  • 0x10 = WP/JP Cost
    • How much WP or JP the tech costs to use; can also be set to use all WP and/or JP
    • Value Range: 0-63
    • Bit Toggles: 
      • 0x40 = use JP instead of WP
      • 0x80 = use all WP or JP
  • 0x11 = Ammo Cost
    • Self-explanatory
    • Value Range: 0-63
    • Bit Toggles:
      • 0x40 = no item drops, monster absorbs, or program downloads for target enemy
      • 0x80 = consume all bullets?

Editing Skill Table 1

Manual Method

Before you can begin making modifications, you must first extract the game executable from the ROM. For the American version, this is “SCUS_942.30”. For the Japanese version, this is “SLPS_008.98”. For the demo, this is “SF.EXE”.

To edit skills manually, just go to the memory address of the table you want to mess with in a hex editor and do whatever you want. It’s extremely tricky to do this, however, as there are over 500 skills in this table, so you’ll have to know exactly where each skill lies.

To calculate the position of a certain skill in this table, use this formula (with hex, of course):

TableAddress + (TableAddress * SkillNumber)

To set multiple values and bit toggles for a specific byte, just add the hex values together.

If you don’t feel like doing this, there is another option available to you that is far more user-friendly.

BNE2 Method

Setting Up BNE2 on Windows 10

  1. Right-click BNE2 and click on “Properties”
  2. Click the Compatibility tab
  3. Click the box in the “Compatibility Mode” section
  4. In the dropdown box in the same section, set it to “Windows XP (Service Pack 3)”

It should look like the below image:

When launching BNE:

  1. Launch LEGUI and ensure that the top dropdown box is set to “Run in Japanese”
  2. Right-click BNE2, hover your mouse over “Locale Emulator,” and click “Run in Japanese”

Making Modifications

Before you can begin making modifications, you must first extract the game executable from the ROM. For the American version, this is “SCUS_942.30”. For the Japanese version, this is “SLPS_008.98”. For the demo, this is “SF.EXE”. You must also download the settings required for your executable, which are linked at the top of this page.

To open your executable with the correct settings:

  1. Open BNE2 in Japanese
  2. Click on “Options”, then “Settings”
    • You can also press O, then E
  3. Click on the settings you want, then click “OK”
  4. Click on “File”, then “Open”
    • You can also press F, then O
  5. Navigate to where your executable is stored and open it

To make modifications for cells that contain specific options, just click on the box you want, click the dropdown arrow, and select a setting you want. It’s that easy. For cells that don’t have specific options or aren’t in decimal, you’ll have to type in the hex yourself as if you were editing it manually (the benefit being you don’t have to hunt down a specific hex offset). Be sure to type in “0x” before typing in the hex number you want.

The settings are configured in such a way so that you don’t have to reference 50 different spreadsheets; just select an option from the dropdown or enable/disable bit flags at your leisure. For cells that don’t have dropdowns or decimal values, the notes for that byte are in the little box at the bottom of the window so you don’t have to constantly reference this site.

To save your modifications, press Ctrl+S. The tool will create a .BAK version of the file you just modified in case you need to manually go back to the last save you made.

If you feel like something went wrong with the settings or my explanation on how to use BNE2 wasn’t sufficient enough, you can reach out to me on Discord (FFVD Games#1978) or the GameFAQs thread I made for this project.

Importing and Testing your Modifications

  1. Open CDMage
  2. Drag-and-drop the ROM you would like to edit onto the CDMage window
  3. In the drop down menu, select M2 (the second option)
  4. Click on the option in the left column that says “Track 1”
  5. Right click the file you would like to replace and click “Import File”
  6. Navigate to the file you would like to replace the file inside the ROM with and click “Open”
    • In our case, it’s either SCUS_942.30, SLPS_008.98, or SF.EXE

After that, just boot up the game in an emulator and have some fun!

Note that you can use this new ROM on real hardware given that you have the required mods and tools (e.g. POPSLoader, an ODE, CFW, etc.).

If you are satisfied with your changes and would like to distribute your mod, click here for a tutorial on how to make a patch file. I recommend you use PPF Studio, but you can use whichever patch standard you want.