All right, I've added enough features at this point to release a new version, I think. (Rather than just talking about how I have the features on my computer). So, here it is!
Here are the features in .482:
* FFTPatcher can now edit the Unknown 1 (0x06) and Unknown 2 (0x0b) item bytes, as well as Unknown in Weapon Secondary Data (0x03).
* The ENTD in FFTPatcher should display rows that have location conflicts (Same X/Y/UpperLevel) in red (for any units that are not Randomly Present or Sprite Set 00).
* Ctrl+C, Ctrl+V should now work in FFTPatcher in any place where you can right-click and copy, right-click and paste. I didn't add copy/paste to any area that didn't already have it, however.
* The lists of abilities/jobs/items/etc (on the left) in FFTPatcher should now support a type-ahead that will select the first matching list item as you type its name. The hex prefix should be ignored, so for example, if you type "Gran" it will select "015E Grand Cross". You can delete characters from the type-ahead with backspace, or clear it with ESC and start again.
* Added some hacks to FFTorgASM, notably adding Choto's remove zodiac compat hack (I had to restrain myself from deleting that leading nop
) and fixing a Razele hack, as well as adding some hacks of my own.
* Added a defense (damage percentage reduction) hack to FFTorgASM based on the item 0x06 and 0x0b bytes. (It sounded like a good idea, Pride
* Shishi should have the R999 changes.
* FFTorgASM can now understand ASM and encode/patch it directly! Specify mode="ASM" in a <Location> tag to use ASM instead of the hex encoding. Currently, ASM mode is available for any <Location> tags where the file is specified as SCUS_942_21, BATTLE_BIN, or WORLD_WORLD_BIN. That covers the vast majority of ASM hacks. Support can be added for other files if we know their file-to-RAM offsets.
* Additionally, FFTorgASM can support many psuedoinstructons even if they take multiple lines. The list of psuedoinstructions here
should mostly be supported. You can also do fun things like lw r2,0x80192d90
and lbu r3,0x801908cc(r4)
, although these commands always generate the entire address, so this will be less efficient in cases where you can reuse part of the address. Those two statements would become 5 lines of regular ASM, but this example can be done in 4. As a sidenote, these pseudoinstruction patterns are very apparent in FFT's ASM code. Check MassHexASM (also being updated now) to see how these encode/decode.
...I believe that's everything!