News: 11 March 2016 - Forum Rules

Author Topic: Changing the amount of frames in combat, Final Fantasy 1  (Read 2585 times)

RobertAugustdeMeijer

  • Jr. Member
  • **
  • Posts: 34
    • View Profile
Changing the amount of frames in combat, Final Fantasy 1
« on: June 20, 2015, 04:03:37 am »
One thing I'd really like to add to my Final Fantasy (Ultra) hack is to boost the speed of the game. I've added a dash button and made the text appear quicker, so the overworld speed is fine. Now just the battles.
Is there a way to change the amount of frames during-
-The explosion when a monster gets hit
-The step a light warrior takes when its their turn
- When attacking a monster

I like my games fast!
« Last Edit: June 20, 2015, 07:09:39 am by RobertAugustdeMeijer »

Bregalad

  • Hero Member
  • *****
  • Posts: 2763
    • View Profile
Re: Changing the amount of frames in combat, Final Fantasy 1
« Reply #1 on: June 20, 2015, 10:21:06 am »
You should trace the main code that executes during those particular events, but I'd believe it's simple to change (in most cases, a single byte change in ROM).

Disch

  • Hero Member
  • *****
  • Posts: 2814
  • NES Junkie
    • View Profile
Re: Changing the amount of frames in combat, Final Fantasy 1
« Reply #2 on: June 20, 2015, 11:53:01 am »
I'm going to assume you have the disassembly:

-The explosion when a monster gets hit

This is kind of a pain because the number of frames for this is in 4 different places in the code (different values for different sized enemies)

In bank_0C, search for "STA explode_count".  You should find 4 of them.  Immediately before the STA, there is a line that has "LDA #$xx" where 'xx' is some hex number.  That number = the frame length of the explosion effect.  Lower number = shorter explosion.

Quote
-The step a light warrior takes when its their turn
- When attacking a monster

These both share the same routine.  Also in bank_0C, search for "CharWalkAnimationLeft:" and "CharWalkAnimationRight:"  (with the colons, as that will take you to the routine, rather than to JSRs to it)

walk left has "LDA #-2", whereas walk right has "LDA #2".  That is how many pixels per 2frames the character will move.  I recommend keeping this number a power of 2, otherwise you risk messing up some other graphical effects because the player might walk too far.

So if you want to double their walking speed, you can change those values to -4 and 4 respectively.

RobertAugustdeMeijer

  • Jr. Member
  • **
  • Posts: 34
    • View Profile
Re: Changing the amount of frames in combat, Final Fantasy 1
« Reply #3 on: June 29, 2015, 09:47:00 am »
Thanks Disch!
When I get back from vacation, I'll bite the bullet and figure out how to use the assembler. Can't wait to play the souped up version!

July 03, 2015, 03:13:38 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
I'm still on vacation, but had some time to toy around with the assembler. Excellent stuff, being able to change pretty much anything in the game!
Thanks for thet tips, Disch. I did have to reduce the amount of frames that a Light Warrior steps, because doubling their walking speed also makes them walk twice as far!

But... I'm working on a version of Final Fantasy that already has been heavily modified. Asking for an assembly for 'Final Fantasy Ultra' would be too much, but I might be able to work out where in the hex editor I have to change values... when I'm done here at the Butterfly Valley.
« Last Edit: July 03, 2015, 03:13:38 pm by RobertAugustdeMeijer »

Disch

  • Hero Member
  • *****
  • Posts: 2814
  • NES Junkie
    • View Profile
Re: Changing the amount of frames in combat, Final Fantasy 1
« Reply #4 on: July 04, 2015, 09:12:16 am »
Quote
But... I'm working on a version of Final Fantasy that already has been heavily modified.

Yeah.  IPS patches are pretty much the worst possible way to distribute ROM changes.  I seriously can't think of a way that would be more clunky or error prone.  It'd be nicer if people distributed asm files/mods that people could apply rather than naive binary patches.  Not only would this make it easier to stack changes, but it also would do a much, much better job of catching conflicts.

Sadly I'm not sure if existing assemblers know to watch out for conflicts when patching games.  And in the case of the FF disassembly, it pretty much expects to be able to assemble the game from the ground up.

Quote
I might be able to work out where in the hex editor I have to change values

It shouldn't be too hard.  The disassembly mentions the offset to the start of the routine, so changing a byte in the middle of the routine might take a bit of counting, but it can be done.

RobertAugustdeMeijer

  • Jr. Member
  • **
  • Posts: 34
    • View Profile
Re: Changing the amount of frames in combat, Final Fantasy 1
« Reply #5 on: July 09, 2015, 08:42:35 am »
Alrighty!
I got things working the way I wanted  ;D

Using the Disassembly and the tips you gave me, Disch, I made a version of Final Fantasy with the animation frames I wanted. I then looked up the hex values in a hex editor. Those I simply put into Final Fantasy Ultra, the hack I'm making... and pesto!

I've just done the same with changing the damage lava/frost tiles do. I know it's a sloppy way of hacking the game, but so far, it's been perfect and quick! Thanks!