• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
June 16, 2025, 06:47:31 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.


Razele's ASM Hacks

Started by Razele, January 01, 2009, 02:08:08 pm

SentinalBlade

February 08, 2009, 11:44:15 am #360 Last Edit: February 08, 2009, 12:05:18 pm by SentinalBlade
I was informed(i think by zodiac and spinOUT) that FFT and most other PSX games were programmed in C++

ASM is what all language is broken down to once compiled...thus there being tons of different asm subgroups, because of all the different compilation methods. i highly doubt FFT or any other PSX game was coded directly in ASM :P...although i can very well be wrong, it just doesnt seem likely...even in the mid 80s, BASIC was a common language, even though half of it was numbers(if i remember right), but it was like ASM. and even then, BASIC had an ASM structure if you opened the file in a hex editor.

Edit: Zodiac informed me that it was coded in C, not C++

Archael

February 08, 2009, 11:51:31 am #361 Last Edit: February 08, 2009, 12:05:56 pm by Archael
QuoteOff topic: Actually, ASM is the language that this game was programmed in directly.

lol


QuoteWell, that is already a problem, and you're right that my solution doesn't address it. But the request was for the AI to not totally ignore confu'd units. Which my solution does address.

What the fuck? The problem is AI perma-ignoring confused units. Your solution doesn't address the problem in a fashion that will work properly in the game environment.

In other words, your solution doesn't address anything, hence why I called it out as a solution that does not work.

Seriously, it's like you're so caught up in trying to prove yourself right that you don't even think about what you are saying.

You are wrong and your solution was wrong.



QuoteDepending on how the AI is programmed units that are normally ignored would continue to be ignored for the purposes of dealing with confusion. I suppose the best thing would be to make sure that any incapacitated units aren't counted as inactive.

Uh, which leads us back to the problem presented here:

QuoteThe condition would have to be "Kill all remaining Confused units that are NOT: Dead, Petrified, Frogged, etc etc", which is problematic, because that is basically the same as "Kill all Confused units."

Which doesn't work.



QuoteSo something like this:
If all active enemies are confused, treat confused enemies as non-confused enemies until such time that an active, non-confused enemy becomes present. Checking for an active enemy would be to check for enemies that do not have one of the following status; dead, petrify, charm, stop, crystal, jumping, invite, treasure, chicken, frog, or wall.
This way the AI should ignore confused units while more dangerous enemies are present on the battlefield, but not at any time that there are only confused units on the field

Once there are no confused enemies on the battlefield the AI should automatically revert to whatever way it normally treats the above mentioned incapacitating status.


And you said that a timer would be too complicated?

^_^;;


QuoteAt least that's what my game design and programming professors taught me in class.

That explains a lot about how you act, actually. You have taken classes on game design from the upstairs college of Bumfuck, Nowhere.

I'm sure that makes you feel your ideas are golden.



QuoteJust doing things from a mechanical point of view can easily lead to things that work great, but seem silly or even stupid to an average gamer who isn't thinking about, or is even aware of, the mechanics behind it. Maintaining an illusion of reality is important to good game design.

Is this from Game Design Theory 101?

Go tell your professors that game mechanics must first work great, and THEN be made interesting and full of immersion. [ONCE THEY ARE WORKING GREAT]

Not the other way around.

If you have something that makes sense and looks cool, but doesn't work properly, the illusion of reality is OBLITERATED.

ASM hacks are about mechanics... just make sure your ideas do what they need to do, and leave the illusion of reality to other aspects of the game.

All a mechanic needs to do is work properly to contribute to the sense of illusion, but it's the storytelling, art, effects, sounds, design, architecture, and environment that contribute to the illusion of reality.





QuoteHowever, I don't appreciate those (not you SB) that try to tell me how I should present my thoughts. There's nothing wrong with presenting some logic behind an idea you come up with.

I don't think anyone in this thread (or in the entire history of FFH, or atleast as long as I have been here) has ever told you how to present your thoughts.

In this thread, however, we told you that the logic behind the ideas you come up with was horrible, un-fun, and that we hope Razele didn't take it seriously.

Don't try to make yourself the victim of something you are not, or pretend like the accusations against you were un-fair or off topic. They were totally on topic.

If Razele starts taking you seriously, we're all doomed.

QuoteI have no problem with being told there's a technical problem with my suggestions.

You not only got told there's technical problems, you also got told they are shit suggestions.

I don't see why you can't grasp what is going on. Stop pretending like people are un-reasonably trying to "change how you think", because that's not what's going on.

Asmo X

February 08, 2009, 11:59:33 am #362 Last Edit: December 31, 1969, 07:00:00 pm by Asmo X
Quote from: "Voldemort"I don't think anyone in this thread (or in the entire history of FFH, or atleast as long as I have been here) has ever told you how to present your thoughts.

I did. If we start trying to base game mechanics based on our rationalisations of confused people or angry people or poisoned people or whatever bullshit, theres no saying any of that is going to integrate well. Lets start with good mechanical ideas and then come back afterwards and decide how to present them. Lets also not change shit that doesn't need to be changed for largely the same reason.

Archael

February 08, 2009, 12:08:35 pm #363 Last Edit: December 31, 1969, 07:00:00 pm by Archael
QuoteLets also not change shit that doesn't need to be changed for largely the same reason.

Well in my patch, Any Ground makes the people Absorb : Earth because Any Ground is related to Ground so it is cool that they get the element of the ANy Ground they are moving on and this Absorb Earth.

In my patch, flails also absorb wind because people wield them around and the whooshing motion of flails makes sense that they acquire this element so absorb: wind , wind :Elemental and Strengthen: wind  for all flails.

Vanya

February 08, 2009, 12:14:14 pm #364 Last Edit: December 31, 1969, 07:00:00 pm by Vanya
QuoteAnd you said that a timer would be too complicated?

It probably still is as opposed to a branch and a byte comparison.

QuoteUh, which leads us back to the problem presented here:

Quote:
The condition would have to be "Kill all remaining Confused units that are NOT: Dead, Petrified, Frogged, etc etc", which is problematic, because that is basically the same as "Kill all Confused units."

No it wouldn't. It would treat things differently with the presence of confused enemies.
  • Modding version: Other/Unknown
¯\(°_0)/¯

Archael

February 08, 2009, 12:18:58 pm #365 Last Edit: December 31, 1969, 07:00:00 pm by Archael
QuoteNo it wouldn't. It would treat things differently with the presence of confused enemies.

Yes, it would. This is what I was referring to:

QuoteI suppose the best thing would be to make sure that any incapacitated units aren't counted as inactive.
[/b]

This doesn't treat anything differently with regards to the Confusion issue (result). Same problem as we discussed before. Same problem as Confu
vanilla.

QuoteIt probably still is as opposed to a branch and a byte comparison.

Yeah, and FFT was probably coded in ASM too right?

samuchan

February 08, 2009, 01:01:02 pm #366 Last Edit: December 31, 1969, 07:00:00 pm by samuchan
QuoteBroken / stolen items can be bought back at Fur Shop
BATTLE.BIN
0x126470 change 00000000 to 224E0508

0xEC888
1980043C
982D848C
BA018490
02210400
0F008014
00000000
0D00A010
FF000434
0B00A410
00000000
0580043C
94948434
21208500
00008290
0001432C
02006014
00000000
FE000234
01004224
000082A0
1980023C
902D428C
1D350608
00000000

I'm a noob to asm hacking.

What does the block of text mean?

Archael

February 08, 2009, 01:15:52 pm #367 Last Edit: December 31, 1969, 07:00:00 pm by Archael
Quote from: "samuchan"
QuoteBroken / stolen items can be bought back at Fur Shop
BATTLE.BIN
0x126470 change 00000000 to 224E0508

0xEC888
1980043C
982D848C
BA018490
02210400
0F008014
00000000
0D00A010
FF000434
0B00A410
00000000
0580043C
94948434
21208500
00008290
0001432C
02006014
00000000
FE000234
01004224
000082A0
1980023C
902D428C
1D350608
00000000

I'm a noob to asm hacking.

What does the block of text mean?

that all values starting at address 0xEC888  must be changed to what is on the block of text

Vanya

February 08, 2009, 01:32:21 pm #368 Last Edit: December 31, 1969, 07:00:00 pm by Vanya
Whatever, Arch, you're not the one that's gonna program it anyway.
  • Modding version: Other/Unknown
¯\(°_0)/¯

Archael

February 08, 2009, 01:51:17 pm #369 Last Edit: December 31, 1969, 07:00:00 pm by Archael
Quote from: "Vanya"Whatever, Arch, you're not the one that's gonna program it anyway.

And?

What does that have to do with giving Razele solid ideas when he asks for them?

Vanya

February 08, 2009, 02:29:20 pm #370 Last Edit: December 31, 1969, 07:00:00 pm by Vanya
I didn't say it had anything to do with that.
Now you can spend time coming up with a better idea or keep bitching about mine, whatever you like. I don't give a shit.
  • Modding version: Other/Unknown
¯\(°_0)/¯

Vanya

February 08, 2009, 02:37:29 pm #371 Last Edit: February 08, 2009, 03:44:03 pm by Vanya
Quote from: "SentinalBlade"I was informed(i think by zodiac and spinOUT) that FFT and most other PSX games were programmed in C++

ASM is what all language is broken down to once compiled...thus there being tons of different asm subgroups, because of all the different compilation methods. i highly doubt FFT or any other PSX game was coded directly in ASM :P...although i can very well be wrong, it just doesnt seem likely...even in the mid 80s, BASIC was a common language, even though half of it was numbers(if i remember right), but it was like ASM. and even then, BASIC had an ASM structure if you opened the file in a hex editor.

Edit: Zodiac informed me that it was coded in C, not C++

Yeah, you and Zodiac are right about that. I was just reading about it. One thing I found interesting, though, is that one of the PSX libraries is actually geared for programmers that prefer to program directly in MIPS. So I didn't just imagine that after all.
  • Modding version: Other/Unknown
¯\(°_0)/¯

samuchan

February 08, 2009, 03:09:54 pm #372 Last Edit: December 31, 1969, 07:00:00 pm by samuchan
Quote from: "Voldemort"that all values starting at address 0xEC888  must be changed to what is on the block of text

Thanks.

Although with "0x126470 change 00000000 to 224E0508," there's only one line that's "00000000," right?

Archael

February 08, 2009, 03:26:51 pm #373 Last Edit: December 31, 1969, 07:00:00 pm by Archael
Quote from: "samuchan"
Quote from: "Voldemort"that all values starting at address 0xEC888  must be changed to what is on the block of text

Thanks.

Although with "0x126470 change 00000000 to 224E0508," there's only one line that's "00000000," right?

yeah

you find the 0000000 that is located in address 0x126470 and change it to 224E0508

and then the rest of the changes are in the other address

Kokojo

February 08, 2009, 07:30:25 pm #374 Last Edit: December 31, 1969, 07:00:00 pm by Kokojo
Requests, if possible. If not, tell me to gtfo.

1) At the end of unit turn he gain 2hp, as a ''resting'' phase. Is there any way to do this withouth the little ''2 hp'' popping up? Replace silent walk with a seem-alike of move-hp-up.

2) Replace an unused status (Dark/evil looking, blood suck, wall) by a ''cannot be healed'' Status.

Thanks a lot Razele.
I keep leaving, I keep coming back. Boomerang boy.

samuchan

February 08, 2009, 09:12:23 pm #375 Last Edit: December 31, 1969, 07:00:00 pm by samuchan
Learn summon spells by being next to an ally that cast it.

Generic 1: Just opened up summoner class, and does not know any spells.

Generic 2: Knows Ifrit.

Generic 1: Stands adjacent to Generic 2, who cast Ifirt.

Generic 1 learns Ifrit by "seeing" Generic 2 cast it.

Maybe both units have to be summoners.

Razele

February 08, 2009, 09:56:12 pm #376 Last Edit: December 31, 1969, 07:00:00 pm by Razele
* Customized Item formula
* Added starting money (2 byte, 65535 max)

Quote1) At the end of unit turn he gain 2hp, as a ''resting'' phase. Is there any way to do this withouth the little ''2 hp'' popping up? Replace silent walk with a seem-alike of move-hp-up.

2 HP recovery are too small. In early game, it's still too small, and when your unit already has 700+ HP
you won't notice 2 HP heal. Actually, it's easier to do "silent" HP recovery, something that
I do with old Teleport. If you apply my old Teleport code,
you will notice that your unit lost MP without any MP pop up.

I still prefer to merge this idea with Move-HP Up + Rest or make Rest as separate movement ability.
If you pick wait, you gain X% MaxHP if your 'Act' and 'Move' command are still enabled.

Quote2) Replace an unused status (Dark/evil looking, blood suck, wall) by a ''cannot be healed'' Status.
You can combine them with Undead status to make them unable to recover HP.

QuoteHey Raz,

Do you happen to know how to change the player's starting inventory?

I believe it is customary for the player to start with one of each chemist item, and 2K money. Personally, I'd like to have the player start with Katana, but a better hack for the community would be if we could start with nothing in the inventory.
The function is located in SCUS_942.21 but I'm sure it's called once, so I can redirect it to WORLD.BIN
Which starting items do you want ?


QuoteLearn summon spells by being next to an ally that cast it.

Generic 1: Just opened up summoner class, and does not know any spells.

Generic 2: Knows Ifrit.

Generic 1: Stands adjacent to Generic 2, who cast Ifirt.

Generic 1 learns Ifrit by "seeing" Generic 2 cast it.

Maybe both units have to be summoners.
Nice idea, but this will allow Summoner to transfer all of their skills to their friends without any effort.
I still prefer the "Blue Mage" style transfer. You have to experience their effects first to learn it.
The easiest way would be to make Summon skills to hit allies (Check "Hit Allies" in fftpatcher).

VincentCraven

February 08, 2009, 10:01:31 pm #377 Last Edit: December 31, 1969, 07:00:00 pm by VincentCraven
Actually, I figured out a good way to make my Draw Out skills to function without Katana.  If it is easy, I'd like the starting inventory to be completely empty, but it's more of an aesthetic thing than anything else.
I changed jobs and that has made all the difference.

Vanya

February 08, 2009, 10:06:52 pm #378 Last Edit: December 31, 1969, 07:00:00 pm by Vanya
QuoteIf you apply my old Teleport code,
you will notice that your unit lost MP without any MP pop up.

Can that be easily modified to allow the mp usage to show?
  • Modding version: Other/Unknown
¯\(°_0)/¯

samuchan

February 08, 2009, 10:08:06 pm #379 Last Edit: December 31, 1969, 07:00:00 pm by samuchan
Quote from: "Razele"
QuoteLearn summon spells by being next to an ally that cast it.

Generic 1: Just opened up summoner class, and does not know any spells.

Generic 2: Knows Ifrit.

Generic 1: Stands adjacent to Generic 2, who cast Ifirt.

Generic 1 learns Ifrit by "seeing" Generic 2 cast it.

Maybe both units have to be summoners.
Nice idea, but this will allow Summoner to transfer all of their skills to their friends without any effort.
I still prefer the "Blue Mage" style transfer. You have to experience their effects first to learn it.
The easiest way would be to make Summon skills to hit allies (Check "Hit Allies" in fftpatcher).

That would make summon spells lose alot of their appeals.

Maybe you can make it so that summons ignore all allies... ...except summoners.