• Welcome to Final Fantasy Hacktics. Please login or sign up.
 

Brand new to Modding - A few questions

Started by ZaneOlric, February 07, 2022, 11:39:07 am

ZaneOlric

So I have gone from a computer caveman to trying to learn modding as of this month.  Its mainly because seeing the amazing work of everyone on this forum to my all time favorite game got me excited.  As I am still working on trying to figure out the basics of how to even properly change anything, I wanted to try and see how much my ambition is fiction vs possible.  So I wanted to ask here since no one would know better then this community.

Question 1: for FFTA or FFTA2, is it possible to add a new class without overwritting a previous one?  Example: could I add the dark knight to Hume without destroying an already existing class?  Similarly, could that be done with an entire race, item, equipment, monster, etc.

Reason for this question is that all the mods I've seen replace an existing class rather then adding a new one entirely.  What I'm really asking is if this possible, not if it is easy.  I'm already aware of how much of a learning curve I'm about to go on so something being even harder is more of a challenge then an obstical.

Question 2: for FFTA or FFTA2, is there a limit to how much you could add?  Example: if in FFTA I added every monster from FFT and then tried adding in every class from FFTA2 would I hit some barrier where the game couldn't handle it.

There are a lot more questions, but I'm still learning basic modding technique so I'm at the point where I'm deciding if I should focus on FFTA or FFTA2.  It really is more based on how much the systems would let me add since I have a pretty extensive idea for where I want to end.  I've been breaking it down into sub goals and I think these two questions would help me figure out where my efforts should be pointed.

Thank you to anyone that can help me with this.
  • Modding version: Other/Unknown

nitwit

February 08, 2022, 09:13:50 am #1 Last Edit: February 08, 2022, 08:51:26 pm by nitwit
If you figure it out on your own, please let us know the results.

matchet

As long as we find a magical solution to break rom's cheksum limits, we are constrained on question 1 to play/mod what already exists.
  • Modding version: Other/Unknown

nitwit

Quote from: matchet on February 08, 2022, 06:33:15 pmAs long as we find a magical solution to break rom's cheksum limits, we are constrained on question 1 to play/mod what already exists.
Could you go into more detail on this, and what it means?

ZaneOlric

Quote from: matchet on February 08, 2022, 06:33:15 pmAs long as we find a magical solution to break rom's cheksum limits, we are constrained on question 1 to play/mod what already exists.

Thank you for your response.   Wow this is going to be a trip to figure out rom hacking.

This has lead me to dig into what checksum's are. To my understanding, checksum's are the roms way to identify a file.  However, I read that this is done by an alograthim?  Theoretically, that means it is possible to create a checksum for a new file, adding in new content?

(I'll have to dig much more to see if my theory is full of holes or not.  I'm so new I don't know how much of a challenge I'm setting for myself, but as of right now this has me excited.  Thank you again for your response.)
  • Modding version: Other/Unknown

ZaneOlric

I got some help from the Pokemon rom hacking community.  Ellabrella game me this response to Checksums

Quote from: undefineda "checksum" is a pretty general concept in computer science. basically, data is stored as numbers, and there's a way to do some mathematical thing to those numbers, such that you get a unique answer which can only be generated from those specific numbers. that unique answer is called a "checksum", and it means that if any of the data used to generate the checksum is changed, you will get a different checksum. so basically it's a way of checking that the data being looked at is the same as the data which the checksum was generated from.

it's true that every GBA ROM has a checksum in its header. this checks certain data that nintendo requires from every GBA game, like a 4-letter game code, a 2-letter maker code, and a version number. a real GBA will crash if the checksum doesn't match the data for this section. there's a tool you can use to calculate this checksum for you. i found this info on pokecommunity here: https://www.pokecommunity.com/showthread.php?t=440897

this checksum only deals with a very small section of the header, so it has nothing to do with the rest of the content of a ROM. certainly it wouldn't prevent you from editing dialogue or characters. but as mentioned earlier, a checksum is something that can be implemented in a lot of different ways, in a lot of different places, for a lot of different reasons. [for example, the GBA pokemon games use a checksum to make sure that a pokemon's data is legitimate.](https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_structure_(Generation_III)#Checksum) if a pokemon's data is edited by a hacker without considering the checksum, the game turns the pokemon into an unusable "bad egg" as an anti-cheat measure.

so probably what your game's community is having trouble with is a hacking-prevention checksum specific to something in that game. if that's the case, then unfortunately it wouldn't have a general GBA solution.
  • Modding version: Other/Unknown

nitwit

February 10, 2022, 07:02:21 pm #6 Last Edit: February 10, 2022, 10:50:44 pm by nitwit
Quote from: ZaneOlric on February 10, 2022, 11:10:31 amI got some help from the Pokemon rom hacking community.  Ellabrella game me this response to Checksums
I'm not sure how to parse the response you got to your earlier post, or judge its usefulness. Maybe study the data structures and the editors for each data structure and see what test cases you can make to determine the limits of what can be modded.

Here are some relevant links on data structures and some editors (probably out of date compared to what's here at FFH).

https://www.romhacking.net/games/1419/

https://datacrystal.romhacking.net/wiki/Final_Fantasy_Tactics_Advance

matchet

As I said in the past, discovering a way to break the limits of a psx/psp rom and make new content over that new "unlimited" new size instead of just playing around the limits of the said rom is pure daydreaming, because the older is this community and no one has ever reach that achievement. May be wrong, thou, but I doubt.

So, what community has designed afaik are tools that works on editing the existing space, and even clearing/simplifying some data to make room for extra space (like the addition of the riskbreaker on fft tlw 2.0)
  • Modding version: Other/Unknown

nitwit

February 14, 2022, 02:23:27 pm #8 Last Edit: February 15, 2022, 07:10:48 pm by nitwit
Quote from: matchet on February 14, 2022, 09:08:53 amAs I said in the past, discovering a way to break the limits of a psx/psp rom and make new content over that new "unlimited" new size instead of just playing around the limits of the said rom is pure daydreaming, because the older is this community and no one has ever reach that achievement. May be wrong, thou, but I doubt.

So, what community has designed afaik are tools that works on editing the existing space, and even clearing/simplifying some data to make room for extra space (like the addition of the riskbreaker on fft tlw 2.0)
That is all well and good, but this is the FFTA board and while OP didn't explicitly say so I'm pretty sure he just wants to know the currently existing limits rather than how to transcend them.

I also want to know the currently existing limits, hence my interest in this thread.

EDIT

I thought about it last night and probably the best contribution I could make to figuring this out would be a collection of save files with everything unlocked and available for easy testing. GameFAQs has a few saves, but I don't know how to use them with an emulator, convert them to a form that an emulator uses, or what form of save an emulator uses.

https://gamefaqs.gamespot.com/gba/560436-final-fantasy-tactics-advance/saves

/EDIT

Throwing out words like "checksum" and paraphrasing things you've read elsewhere isn't I think the contribution OP was looking for.

ZaneOlric

February 15, 2022, 06:13:24 pm #9 Last Edit: February 15, 2022, 07:06:40 pm by ZaneOlric Reason: Simplifying quote to what I wanted to reply to personally.
Quote from: nitwit on February 14, 2022, 02:23:27 pmThat is all well and good, but this is the FFTA board and while OP didn't explicitly say so I'm pretty sure he just wants to know the currently existing limits rather than how to transcend them.

This is very accurate.  My reason for starting this is to see what the community has accomplished and how far the game has been pushed to date.

I've set my personal "end goal" to become skilled enough to contribute modding tools for the community.  However, that is a commically long way off for me, who is still mastering the lingo and basic concepts of coding/modding.  So for now I'm just trying to avoid "reinventing the wheel" and figuring out a good starting point for my learning.
  • Modding version: Other/Unknown

nitwit

February 15, 2022, 07:18:20 pm #10 Last Edit: February 17, 2022, 02:27:05 am by nitwit
Quote from: ZaneOlric on February 15, 2022, 06:13:24 pmThis is very accurate.  My reason for starting this is to see what the community has accomplished and how far the game has been pushed to date.

I've set my personal "end goal" to become skilled enough to contribute modding tools for the community.  However, that is a commically long way off for me, who is still mastering the lingo and basic concepts of coding/modding.  So for now I'm just trying to avoid "reinventing the wheel" and figuring out a good starting point for my learning.
Sometimes it can't be avoided. I've had to figure tech things out myself after finding 15 year old forum posts with the same question I have, and no responses.

Since it looks like you have to figure this out yourself, maybe you should pivot to developing a test suite to quickly determine the limits of what's possible.

There are a few nearly completed save files in the link I posted above.

In the link below are some gameshark codes (under the heading "Patch Codes") you can use to manipulate various things - the most useful for you is probably levels and skills learned.

https://gamefaqs.gamespot.com/gba/560436-final-fantasy-tactics-advance/faqs

I'll see if I can find any info on getting those saves working in an emulator tomorrow, and take a look at the editor and data to figure out what's known and what some possible edge cases (and specific test scenarios) are.

EDIT 1

Okay, update.

This is the first place I go when I need any info about GBA resources, but it's not too relevant here:
https://gbadev.net/


Looking at the GameFAQs saves, there's one that looks nice.
QuoteFrom JoKyR (12/11/2005; 64KB)
Ultimate FFTA -- All missions completed. Full party, including all secret characters. All characters max abilities, level 50, with hacked stats (excellent, but not ridiculous stats). Full monster farm. 99 of all items.

https://gamefaqs.gamespot.com/gba/560436-final-fantasy-tactics-advance/saves

I set up mGBA, but I had to close out of it once after loading FFTA and trying to load this save before it would work. Maybe it had to create that save on closing the emulator the first time before it could import it? Anyways, it worked on the second try after turning the emulator off and back on again.

Method:
File -> Import GameShark Save... -> (navigate to folder and select the save)

Save works, at a glance I have all skills for all jobs and 99 of all items.

EDIT 2

I'm going off the AIO editor because Nightmare Modules are, well, a nightmare.

Jobs data appears to go 116 (0x74) entries long, and it looks like each entry is the same size. A few parts of the data reference strings for job descriptions looks like. Race type might be hardcoded. Possibly 14 to 16 free job slots.

Appears there are no free item slots.

Looks like there are two free skill slots.

Formation data looks like a nightmare, but there are plenty of them. No idea how to add another character to a formation though. This data isn't on Datacrystal either.

Treasure hunt editor is exhaustive.

EDIT 3 - final

It looks like most of the data in the AIO editor except formation data is mostly obvious in regards to what's free space, though things like class slots may be hardcoded somehow (and you should ask on the discord about that). Data where it's a fixed number of entries x a fixed number of bytes per entry is usually like that.

You only need to worry about allocating a limited amount of space for something (within the context of editing simple data in a rom) if you're dealing with something where the length of the data can vary and you need some method of setting the limits of each entry. Text strings are a great example of this. Some games have hardcoded limits on how many entries you can make, how long each entry can be, the order in which they can be accessed by the things that reference them, and so on. Other than the formation editor I don't see anything like that in there.

Nightmare modules are probably a very different story, ask on the discord.