• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 18, 2024, 11:41:17 pm

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


My progress in FFTA hacking [Map, Events and Text editing] [Engine Hacks]

Started by Leonarth, July 16, 2018, 12:14:58 am

Leonarth

Just to be clear, you don't need to include anything, everything is already included.
You don't need to uncomment anything outside of the main file either.

Some things are not installed but that's not because the hacks themselves are commented out or not included, rather the definitions that are checked for installing them are what's commented out, you should only uncomment those (in rom buildfile, the main file) and not the hacks themselves (which wouldn't be commented to begin with) if you just want to install them.
  • Modding version: Other/Unknown

Blunderpusse

I have a question about importing custom sprites. Through the EA and instructions you provided, you can import new battle sprites into free space in the ROM file, correct? Is there any way to import them and overwrite existing sprites? For example, imagine I want to overwrite the Viera Red Mage sprite with a Viera Green Mage. Can I do that?
  • Modding version: Other/Unknown
"You sure are a keen observer of the obvious, kupo!"

Leonarth

You don't want to import the new graphics over the old graphics, and you can't, because the animation template graphics are bigger than the vanilla animations.

What you can do is simply make the game not use the old animation. Open the animation template and change the TEMPLATEID definition to the ID of the animation you want to replace. For example, if you wanted to replace the Soldier you would set the ID of the template to 0x00 and the ID of the water template to 0xBC.

It will work exactly the same as if you were using a new ID.

Alternatively, you can insert the animation with a new ID and change the ID of the battle sprite for the class. It really makes no difference, the space used is the same, you can't save space by replacing the old graphics or anything  like that.
  • Modding version: Other/Unknown

Blunderpusse

Thanks for the answer. I have another question regarding sprites, though. So, you have those semi-secret characters (Littlevili, Quin, etc.). Imagine I want to give them their own sprites. How do I make them NOT change sprites when changing jobs?
  • Modding version: Other/Unknown
"You sure are a keen observer of the obvious, kupo!"

Leonarth

The semi-secrets do not have a character ID to them, they are just generics with forced names.
If you want to give them special sprites, you will have to give them a character ID.

Once you've done that, they will work just like any other non-generic and their sprites will never change when changing jobs.

If you are using the intro cutscene removal patch, you can reuse the character IDs for the kids.
I haven't looked into editing the data for special recruitments, though, so I can't really help you on that.
  • Modding version: Other/Unknown

Blunderpusse

No biggie. I was fooling around with NPC sprites on the ROM and that occurred to me.

On the nightmare modules, when opening the "recruitment.nmm" with Notepad(++), right on top there's the offset "0x529788". I don't know if that's the offset where all recruitment on the ROM takes place.
  • Modding version: Other/Unknown
"You sure are a keen observer of the obvious, kupo!"

Leonarth

That would be the base offset of the table.
A nightmare module is structured like this:

1
Name
Base offset
Number of entries
Length of an entry in bytes
Dropdown list .txt file (or NULL)
NULL

After that, you get to specify the values to edit, like this:
Name
Offset
Length in bytes
Type of data
NULL

The types of data are not very important right now, what we need to know is just the base offset, the length of an entry and the offset of the data we want to edit.
The data we want to edit would be at (base + id*length of entry + offset of the data)
(id = entry, it's just a different name for the same thing)
  • Modding version: Other/Unknown

Taxxa88

Good morning, Leonarth. I hope you're feeling well.

I wanted to write you because I'm a big fan of all Final Fantasy Tactics sagas (It's my favorite game), this mod you are creating is super cool I look like a kid with a new toy and I would like to play it as soon as possible.

I ask you:

- Will we see it very soon?

- If I can donate something to help you or what you can tell me, I would be happy to do so.

- Do you already have a playable version to start in this quarantine time?

Thank you very much for everything and a big hug to all of you in the ffhacktcis community, you are the best.

Translated with www.DeepL.com/Translator (free version)
  • Modding version: PSX & WotL

Leonarth

Hello!
I am not exactly making a mod, you can think of what I do as making tools that people can use for their mods. These can, of course, also be used directly with the normal game, if that is what you want to play.

Everything you can see on this thread is publicly available and you can get it at https://github.com/LeonarthCG/FFTA_Engine_Hacks

As this is meant to be used as a starting point from which people can make mods there are many options to choose and customize. That is one of the reasons this is not distributed as a patch, like you might have expected or be used to. If you need help setting it all up, feel free to send me a private message.

I also have a mod that was released last year and uses some of the features shown in this thread. It follows the normal game but you are forced to capture and use monsters instead of normal units.
https://ffhacktics.com/smf/index.php?topic=12212.0

I don't feel comfortable accepting donations but I appreciate the sentiment. Thank you and stay safe.
  • Modding version: Other/Unknown

Blunderpusse

Speaking of the Monster Taming hack, I've got a couple of questions:

1. How did you change the formula for the "Capture" ability?

2. Although you removed it on the hack, monsters still were added to the Monster Bank. What did you do for that? (I tried checking the "Enable Capture" box on AIO's Job Editor, but it did nothing :p)

3. Do you know how to make an universal "Control" (and also a "Morph") ability that affects all monster classes, instead of having one ability for each monster class ([Control] Goblin, [Control] Panther, etc.)?

4. While testing the "Enable Capture", I happened to visit the Monster Bank and the instead of the monster battle sprites, it only showed the shadow at their feet (screenshots attached).
  • Modding version: Other/Unknown
"You sure are a keen observer of the obvious, kupo!"

Leonarth

Quote1. How did you change the formula for the "Capture" ability?
I simply found where the vanilla formula was and added my own stuff to the code.
I think I just check for space in the clan and them being a monster?
I don't remember changing the hit% at all, other than making it able to hit monsters it can't in vanilla, and being unable to hit if the clan is full.

Quote2. Although you removed it on the hack, monsters still were added to the Monster Bank. What did you do for that? (I tried checking the "Enable Capture" box on AIO's Job Editor, but it did nothing :p)
All of the code for the capture effect was rewritten, it does unlock the monsters in the bank but just barely, I mainly did this just to see if it would get that one mission where the monsters escape to work. I'm not sure what you mean with "What did you do for that".
Each monster type has a set place in ram it gets stored to for the bank, if the monster can be found in the bank in vanilla then it gets stored, if not then it doesn't.

Quote3. Do you know how to make an universal "Control" (and also a "Morph") ability that affects all monster Jobs, instead of having one ability for each monster class ([Control] Goblin, [Control] Panther, etc.)?
For "Control" you would just change which Jobs can be targeted, no? It's not something I've looked into.
Morph is more complicated. When you Morph the game actually stores which race you morphed into so you would need to rework whole all of that works.

Quote4. While testing the "Enable Capture", I happened to visit the Monster Bank and the instead of the monster battle sprites, it only showed the shadow at their feet (screenshots attached).
The Monster Bank shouldn't be possible to visit, at least last time I checked it didn't even show up in the map.
I don't store all of the info for the monsters so that could be why they don't show properly.
  • Modding version: Other/Unknown

bcrobert

Just thought I'd comment on the Control/Morph question. For Control you may have to use my Ability Effects nightmare module (not the main Abilities module, the other one). I'm not sure if AIO supports changing targetable race, but I'm 99% sure that one of my modules covered it. Basically you would be looking for the targeted race and just changing it to target all monsters. (The function already exists for effects like Sidewinder, no need for coding.)

As for Morph, that's a whole thing. Since it draws so much data from the Monster Bank, you'd want to essentially cut it off from its initial functions completely. The abilities would need to be rewritten to ONLY change your available A-ability lists, instead of reading a tamed monster's data and changing your stats and blah, blah. (Otherwise you'd need to eff with how the ROM interacts with monster bank data in RAM at every possible point, including making any monster that's morphable capturable. Which would ALSO be a whole thing. That's why I suggest just cutting it off of its original functions and rewriting the ability from scratch.)
My FFTA hacking tools: http://ffhacktics.com/smf/index.php?topic=9559.0

Believe it or not, I'm still working on this game.

rrs_kai

Could you help me with the engine hacks.

I followed your instructions and was able to implement your engine hacks to vanilla FFTA. Then I used my hack's .ups and patched over it even though it gave a warning. I tested a bit and found everything to be fine.
Is there a better way of patching? You've written about free space offset but I did not understand it.
  • Modding version: Other/Unknown

Leonarth

You should do the opposite. An .ups patch can't be made to adapt to a different ROM, my engine hacks easily can.
First patch your ROM, then apply the changes to it afterwards.
(However, ideally you would make all of your changes exclusively through .event files.)

If your .ups patch uses any freespace, it would write all over the engine hacks. However, even if your patch uses freespace, the engine hack starting offset can be changed in order to avoid conflicts. This is why the order matters.

Anyway, when applying the engine hacks to a patched ROM, you first need to make sure the FreeSpace definition is still correct.

If you have never looked at the ROM in a hex editor, there's a point after which there's just nothing, even though the file continues going on, it's all filled with FF (or 00 in some ROMs), FreeSpace should be defined as the offset after which there is no more data, only dummy bytes like that.
  • Modding version: Other/Unknown

Delsait

Has there been any progress on the Morpher hack and has the patch been released?
  • Modding version: Other/Unknown

Leonarth

I'm not sure what Morpher thing you are talking about in particular but everything I made is on github.
https://github.com/LeonarthCG/FFTA_Engine_Hacks
  • Modding version: Other/Unknown

Blunderpusse

Quote from: bcrobert on May 18, 2020, 09:18:14 amFor Control you may have to use my Ability Effects nightmare module (not the main Abilities module, the other one). I'm not sure if AIO supports changing targetable race, but I'm 99% sure that one of my modules covered it. Basically you would be looking for the targeted race and just changing it to target all monsters. (The function already exists for effects like Sidewinder, no need for coding.)

That's what I ended up doing. On your "ability eff" module, by changing the "viable targets" from "control targeting" to "monster", the effect hits any monster race (goblin, lamia, malboro, etc.) I also used that same module to change Capture's accuracy formula.
  • Modding version: Other/Unknown
"You sure are a keen observer of the obvious, kupo!"

Delsait

Quote from: Leonarth on June 07, 2020, 06:26:11 pmI'm not sure what Morpher thing you are talking about in particular but everything I made is on github.
https://github.com/LeonarthCG/FFTA_Engine_Hacks

This one.

Quote from: Leonarth on December 25, 2018, 11:24:57 amSmall Christmas update, today I decided to make something I always wanted as a kid, as a kind of gift to my child self

When I was a kid I heard from my cousins that morphers could transform into monsters and use their abilities, to me that was the coolest thing I had ever heard about this game so I started training a Nu Mou just to see it, once I had a morpher I found out I also needed a hunter so I had to get one of those too.
When I finally figured out how to capture a monster I was extremely disappointed by the fact that after "transforming" morphers would look like they were late to school, waving their arms and sweating, nothing to do with what I had imagined, they only transformed for abilities and then immediately went back to looking silly.

So here I am, 15 years latter, fixing the issue and making my imagination into reality:



This will be included as an option for the job/ability assignation rework.
In case it's not clear yet, this engine hack makes morphers actually transform into monsters, changing their aspect and their movement types.
Morphers will still use the same palette they were using before morphing so player morphers will always be blue or green.
I call it: Morphing Morphers Morph.

Also, this is just an idea from someone who has never done gamehacking, but what if the Morpher's monster form has a unique palette not used by any monster variants? Like the Floateye is Green, the Dragon is Purple, ETC?
  • Modding version: Other/Unknown

Leonarth

QuoteThis one.
That was available before I even made the post you quoted. It's on GitHub like everything else.

Quotewhat if the Morpher's monster form has a unique palette not used by any monster variants?
A unique palette for each one? Impossible, there's only so many palettes you can use at once (16) and all the slots are already pretty much taken, and even if they weren't if you wanted a unique palette for each monster you would potentially need a slot for each Morpher you can have in your team, which is unreasonable.

However, if you wanted to have a green or purple version of a monster you wouldn't need a new palette at all, those colors are already available, what you want is new graphics that use those colors. You can do that for your hack, I have no interest in including it. I think it makes no sense to do, a hack can easily include a new monster type that uses those colors anyway which makes it no different compared to just using one of the already existing ones for the Morpher.

If you want to learn more about how the GBA works I recommend reading http://www.coranac.com/tonc/text/
  • Modding version: Other/Unknown

Delsait

Quote from: Leonarth on June 08, 2020, 05:57:06 amThat was available before I even made the post you quoted. It's on GitHub like everything else.

I see

Quote from: Leonarth on June 08, 2020, 05:57:06 amA unique palette for each one? Impossible, there's only so many palettes you can use at once (16) and all the slots are already pretty much taken, and even if they weren't if you wanted a unique palette for each monster you would potentially need a slot for each Morpher you can have in your team, which is unreasonable.

However, if you wanted to have a green or purple version of a monster you wouldn't need a new palette at all, those colors are already available, what you want is new graphics that use those colors. You can do that for your hack, I have no interest in including it. I think it makes no sense to do, a hack can easily include a new monster type that uses those colors anyway which makes it no different compared to just using one of the already existing ones for the Morpher.

Ok, it was just an idea. I don't think any monster in the game uses a green palette, bar the Malboro. So a green morphed monster would look unique for almost any monster class.

Would it be possible to allow morphers to do a basic "fight" command in monster form? That was something I always felt should be in the game for monsters that lack attack moves.

I remember a youtube trailer for a FFTA hack that showed morphing into zombies/vampires, I'll see if I can find it. Do you have an an all common monsters capturable hack?

Quote from: Leonarth on June 08, 2020, 05:57:06 amIf you want to learn more about how the GBA works I recommend reading http://www.coranac.com/tonc/text/

I'll do that, thanks for the link.
  • Modding version: Other/Unknown