• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 19, 2024, 01:32:28 am

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


ASM Requests

Started by The Damned, October 29, 2014, 09:16:45 pm

C1REX

Is there a hack that can eliminate speed growth from the game? Speed growth cause so much problems for scaling it feels almost like a bug to me.
  • Modding version: Other/Unknown

Pride

I thought this already existed but i can only find the 0 growths hack which affects all the other stats. Poke around some more and it might be available
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

C1REX

At this point a just reduced SP growth from 100 to 200 globally. At least I reduced the problem a bit.


Is there as hack that gives generics and monsters specific value for Brave and Faith?
I would like all generics to start with 70 Brave unless specified otherwise in ENDT. Ramzas pre raw stat can be edited here but I can't find anything for others unless I manually adjust all enemies in ENDT to make sure they won't start with too low Brave.
  • Modding version: Other/Unknown

Tony75

Can someone make a working Knight ability to break the Accessory ?
Also a Mighty Sword Skill to break the Shield .
But with out losing something else Example I want to make Magic Break into accessory break .
  • Modding version: WotL

RavenCurow

April 10, 2018, 06:14:36 am #204 Last Edit: April 12, 2018, 02:00:26 am by RavenCurow
I would like to request a patch that would fix the problem of the multi hit formula's resetting the weapon strike animation after the first hit.
  • Modding version: PSX
Ramza: Delita, your hurt?
Delita: No, really? Did you think I was taking a nap down here?

Timbo

This one's for Xifanie. As a compliment to your Guests in Randoms and Ramza can join as a guest hacks, I would like to request for a hack to change guest slots from 17, 18, 19, and 20 to 1, 2, 3, and 4. I like the aesthetic of Ramza being up front and I think others would as well.

Btw I like this hack more than the Party Roster hack. The party Roster hack takes your guest units away from the formation screen entirely. The player experiences loses out on being able to customize units they can never keep in exchange for extra party slots.

Your hack lets you keep them in the formation which allows the player to hypothetically modify a guest character that is integral to the story throughout the adventure. Essentially, it creates up to four or five main characters and expands the roster size.
  • Modding version: PSX
  • Discord username: Timbo

Nyzer

There's already a way to make units vital the same way Ramza is - game over if they die, can't be dismissed - and it's used in Jot5. You can't get rid of any of the Five.

Having the game's main characters stuck with the "Guest" label throughout the game would just look incredibly weird.

I do agree that it kinda sucks to lose out on the Guest customization in order to expand the roster, but I don't think your solution is a real improvement.
  • Modding version: Other/Unknown

Timbo

You can black out the "Guest" text by editing the graphics with no problem. I would love to see the documentation for that code. Is it or even the code itself published somewhere?
  • Modding version: PSX
  • Discord username: Timbo

Davarian

I've been trying to use Raven's spreadsheet to turn my axe damage formula into PA*WP, but noticed it also changed the random damage formula for flails into something I don't want.  Is there any way to get just the lines to change the axe damage formula without any of the extra stuff (including XA rewrite I guess).
  • Modding version: PSX

Nyzer

QuoteI would love to see the documentation for that code. Is it or even the code itself published somewhere?


Choto set up the Unit Dismissal Hack, which is in my copy of FFTOrgASM right now (and so probably yours too). There's also a "Jot5 Game Over Hack" in the staff board that is probably the one that causes a game over if they crystallize (though I can't guarantee it).

<Patch name="JoT5 Game Over hack">
  <Location file="BATTLE_BIN" offset="EB048">
FDFF1424
01000434
CB02060C
21800400
17005410
00000000
04000434
CB02060C
21800400
12005410
00000000
07000434
CB02060C
21800400
0D005410
00000000
0C000434
CB02060C
21800400
08005410
00000000
32000434
CB02060C
21800400
03005410
00000000
12070508
21900000
12070508
01001224

</Location>
<Location file="BATTLE_BIN" offset="DAc1c">
12480508
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000

</Location>

</Patch>
  • Modding version: Other/Unknown

Heisho

Greetings everyone!

I've been messing around with ASM and learning little by little about formulas and very simple hacks. In my quest to learn more I have stumbled on something. My question is the following:
What does the following code mean, what are their use and could it be bad if I skip it for space sake?

addiu r29,r29,0xffe8      
sw r31,0x0010(r29)
.......
.......
.......
lw r31,0x0010(r29)
addiu r29,r29,0x0018

I apologize in advance for my ignorance, I hope someone can shed some light on this.
  • Modding version: PSX
Grrr, arwg, hiss, and some other zombie noises...
  • Discord username: Heisho

Xifanie

A jal opcode jumps to a certain address and overwrites r31 with the return address, and usually returns to that address with jr r31. That means, inside that routine, any other jal calls will overwrite r31... thus it needs to be temporarily stored somewhere, and reloaded before the routine ends, so it can return where it was meant to. That's where the stack (r29) comes into play. You push it by several bytes to have some space to store variables temporarily, so the routine can feel free to use those registers (as you can just reload them before the routine ends), since there are only 31 regular usable registers. So no, you absolutely can't get rid of them.
  • Modding version: PSX
Love what you're seeing? https://supportus.ffhacktics.com/ 💜 it's really appreciated

Anything is possible as long as it is within the hardware's limits. (ie. disc space, RAM, Video RAM, processor, etc.)
<R999> My target market is not FFT mod players
<Raijinili> remember that? it was awful

Heisho

Quote from: Xifanie on May 30, 2018, 11:50:33 pm
A jal opcode jumps to a certain address and overwrites r31 with the return address, and usually returns to that address with jr r31. That means, inside that routine, any other jal calls will overwrite r31... thus it needs to be temporarily stored somewhere, and reloaded before the routine ends, so it can return where it was meant to. That's where the stack (r29) comes into play. You push it by several bytes to have some space to store variables temporarily, so the routine can feel free to use those registers (as you can just reload them before the routine ends), since there are only 31 regular usable registers. So no, you absolutely can't get rid of them.



Thank you very much Xif. Now a lot of formulas and routines make sense. Time to get back to work.
  • Modding version: PSX
Grrr, arwg, hiss, and some other zombie noises...
  • Discord username: Heisho

Heisho

August 11, 2018, 04:15:52 pm #213 Last Edit: August 12, 2018, 07:36:15 pm by Heisho
Hello there!

I've been trying to develop a routine that allow you to either break or steal all equipment of the target, however I've hit a wall and do not know how to complete it.
At first it was a rutine that will jump if an item wasn't present and the formula that calls the routine had multihit but the game crashed after stealing the helmet (the first item to remove in the routine). Now with this new one I attempt to break/steal on one single hit by creating a loop, although I don't know if trying to send a routine to go back to the beginning using a jump is valid.

Can someone shed some light on this?

This is the code so far:

lui r3,0x8019   
lw r3,0x2d90(r3)   Current Action Data Pointer
ori r2,r0,0x00fe   
sb r2,0x0019(r3)   Store as 0x00FE
lui r4,0x8019   
lw r4,0x2d98(r4)   Load Defender's Stats
nop   
lbu r2,0x0006(r4)   Load Defender's Gender
nop   
andi r2,r2,0x0020   
bne r2,r0,0x000002bc   Branch to end if Gender is a Monster
nop   
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
nop   
lbu r3,0x001a(r2)   Load Defender's Headgear
ori r2,r0,0x00ff   
beq r3,r2,0x0000007c   Branch if Headgear ID is FF  (Doesn't exist?)
nop   
ori r2,r0,0x0080   R2 = 80
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove helmet
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001a(r2)   Load Defender's Headgear
j 0x0000025c           Jump to store item
nop   
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
nop   
lbu r3,0x001b(r2)   Load Defender's Armor
ori r2,r0,0x00ff   
beq r3,r2,0x000000c8   Branch if Armor doesn't exist
nop   
ori r2,r0,0x0040   R2=40
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove helmet?
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001b(r2)   Load Defender's Armor
j 0x0000025c           Jump to store item
nop   
lbu r3,0x001e(r4)   Load Defender's Right Hand Shield
ori r2,r0,0x00ff   
beq r3,r2,0x00000110   Branch if Right Hand Shield  doesn't exist?
nop   
ori r2,r0,0x0008   R2 = 8
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as Remove Right Hand Shield
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001e(r2)   Load Defender's Shield
j 0x0000025c           Jump to store item
nop
lbu r2,0x0020(r4)   Load Left Hand Shield
nop   
beq r2,r3,0x00000148   Branch if Left Hand Shield doesn't  exist
nop   
ori r2,r0,0x0002   R2=2
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove Left Hand Shield
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x0020(r2)   Load Left Hand Shield
j 0x0000025c           Jump to store item
nop   
lbu r3,0x001c(r4)   Load Defender's Accessory
ori r2,r0,0x00ff   
beq r3,r2,0x00000188   Branch if Accessory doesn't exist?
nop   
ori r2,r0,0x0020   R2=20
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove accessory
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001c(r2)   Load Defender's Accessory
j 0x0000025c       Jump to store item
nop   
lui r6,0x8019   
lw r6,0x2d98(r6)   Load Defender's Stats
nop   
lbu r3,0x001d(r6)   Load Right Hand Weapon
ori r7,r0,0x00ff   
beq r3,r7,0x000001c8   Branch if Right Hand Weapon  doesn't exist
nop   
addiu r4,r0,0xffff   R4 = FFFF
sll r2,r3,0x01           Right Hand Weapon * 2
addu r2,r2,r3           Right Hand Weapon * 3
sll r2,r2,0x02      Right Hand Weapon * 12
lui r1,0x8006   
addu r1,r1,r2   
lbu r4,0x2eba(r1)   
lbu r3,0x001f(r6)   Load Left Hand Weapon
nop   
beq r3,r7,0x000001e8   Branch if Left Hand Weapon doesn't  exist
nop   
sll r2,r3,0x01           Left Hand Weapon * 2
addu r2,r2,r3           Left Hand Weapon * 3
sll r2,r2,0x02           Left Hand Weapon * 12
lui r1,0x8006   
addu r1,r1,r2   
lbu r5,0x2eba(r1)   
addiu r2,r0,0xffff   R2 = 0xFFFF
bne r4,r2,0x000001fc   
nop   
beq r5,r4,0x0000024a   
nop   
slt r2,r4,r5   
bne r2,r0,0x00000234   
ori r2,r0,0x0004   R2=4
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
ori r2,r0,0x0010   R2=10
sb r2,0x0019(r3)   Store as remove right hand weapon
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001d(r2)   Load Right Hand Weapon
j 0x0000025c           Jump to store item
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove left hand weapon
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001f(r2)   Load Left Hand Weapon
nop   
ori r2,r0,0x0073   
lui r3,0x8019   
lhu r3,0x38d6(r3)   Load ability used
nop   
beq r3,r2,0x0000028c   Branch if not Great Heist (Thief)
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Target current action data pointer
ori r2,r0,0x0010   Special flag -Steal-
sh r2,0x0010(r3)   Store as steal item
j 0x00000000   
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   
ori r2,r0,0x0004   Special flag -Break-
sh r2,0x0010(r3)   Store as break item
j 0x00000000           return to beginning
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
addiu r2,r0,0xffff   R2 = 0xFFFF
sb r0,0x0019(r3)   Store equipment as 0 ?
ori r2,r0,0x0007   
sb r2,0x0002(r3)   
jr r31   
nop   


Thanks in advance to anyone that can help.

Regards.

EDIT: Could someone remove this post. I made a new thread in Help section for this. Thanks
  • Modding version: PSX
Grrr, arwg, hiss, and some other zombie noises...
  • Discord username: Heisho

Elric

Request for someone to look into the Roster Hack, found HERE or to make a new Hack to allow full, normal use of the 4 extra slots normally reserved for guest, specifically for mods that have guests forced only via ENTD.

The current issues with the existing Roster Hack, from my testing, are as follows:

- While it doesn't show 'GUEST' on people in standard formation, it DOES still show this in Battle Formation, as well as in Battle, which it should only show on ENTD forced Guests.

- When used in battle, units from those last 4 slots act as guests and cannot be controlled.

- When tested with Generics in the last 4 slots, after battle, 3 of the 4 were removed.

- When tested using Rafa and Malak in the first 2 of the last 4 slots, they had prompt to invite them again after each battle.

- Units in these last 4 slots cannot be removed (they don't show up in the list) if you have a full roster upon a join up and are prompted to remove a unit.

I'm requesting this, because in TLW, due to the extra 2 units you can acquire, you would be short of being able to have all possible special units, let alone any generics.

Thank you to any who consider looking into this or possibly making a new hack for it
  • Modding version: PSX

Timbo

I'm looking for an old asm from a few years ago that I can't seem to find. It made it so that the berserker units could use skills from a specific skillset if it was equipped while under AI.  I have an idea to combine it with glain's new geomancy hack to create an earth themed berserker job.

The AI uses Geomancy well enough that I think such a marriage work well together.

Does anyone have a copy of this lying around?
  • Modding version: PSX
  • Discord username: Timbo

xjamxx

I search through 492 xml's and read all post here (yes the 11 pages), but still i didn't found anything about battle camera...

So it is possible to have a asm camera patch? like the starting default camera to be the far and with the higher angle...

Thank you for reading. ;)
  • Modding version: PSX
<Random> This seems to be a PSX issue.
<Elric> A psx issue? That makes no sense. Sounds more like an issue with your OS.

Nyzer

Pretty sure that's set in events. Possibly even for random battles. Camera angle and zoom are set with every Camera command.
  • Modding version: Other/Unknown

xjamxx

you mean i need to edit events with EasyVent Editor? but the folder has like 500 files of events, i need to check all?

and what about the user input r2 and l2? those are in event too?
  • Modding version: PSX
<Random> This seems to be a PSX issue.
<Elric> A psx issue? That makes no sense. Sounds more like an issue with your OS.

Elric

The starting camera for battles is controlled by events. Controller input is not.

Yes there is about 500 files. Welcome to FFT modding
  • Modding version: PSX